angular cliを使用してサービスを生成し、providerとしてに追加することができますapp.module.tsを1ステップで実行するか、ng g serviceコマンドで特別なオプションを使用しますか?
実行時:
$ ng g service services/backendApi
installing service
create src/app/services/backend-api.service.spec.ts
create src/app/services/backend-api.service.ts
WARNING Service is generated but not provided, it must be provided to be used
その隣に(そして警告メッセージに従って)私は通常providerセクションのapp.moduleに追加しますテキストエディタを使用した.ts:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
これを自動化するために、単一のステップでそれを行うことは可能ですか?
実際には、サービスを作成するときにサービス(またはガードも提供する必要があるため、ガード)を提供することが可能です。
コマンドは次のとおりです...
ng g s services/backendApi --module=app.module
編集
機能モジュールに提供することもできます。同様に、必要なモジュールへのパスを指定する必要があります。
ng g s services/backendApi --module=services/services.module
推奨されるアプローチ Angular 6以降のシングルトンサービスの場合:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class UserService {
}
実際--module
スイッチを変更する必要がないため、app
レベルでサービスを登録するためのCLI app.module.ts
スイッチ もう存在しません 。
これにより、モジュールを指定せずに上記のコードが作成されます。
ng g s services/user
そのため、サービスをシングルトンにしたくないしない場合は、自分でprovidedIn
コードを削除してから、コンポーネントのproviders
に手動で追加するか、遅延ロードされたモジュール。現在、providedIn: 'root'
部分を生成しないスイッチがあるようには見えないので、手動で削除する必要があります。
Angular 5およびangle-cli 1.7.0の受け入れられた回答からの構文のわずかな変更
ng g service backendApi --module=app.module
Angular CLIを使用してAngular 4アプリにサービスを追加します
Angular 2サービスは、関連するプロパティとメソッドを伴うjavascript関数であり、Angular 2コンポーネントに(依存性注入を介して)含めることができます。
新しいAngular 4サービスをアプリに追加するには、ng g service serviceName
コマンドを使用します。サービスの作成時に、Angular CLIにエラーが表示されます。
これを解決するには、src\app\app.module.ts
メソッドのproviders
入力内の@NgModule
へのサービス参照を提供する必要があります。
最初は、サービスのデフォルトコードは次のとおりです。
import { Injectable } from '@angular/core';
@Injectable()
export class ServiceNameService {
constructor() { }
}
サービスには、いくつかのパブリックメソッドが必要です。
Angular 5.12および最新のAngular CLIで、
ng generate service my-service -m app.module
パスを指定する
--app
--one
one.module.ts
--services
--two
two.module.ts
--services
作成サービスモジュール内の新しいフォルダーでONE
ng g service one/services/myNewServiceFolderName/serviceOne --module one/one
--one
one.module.ts // service imported and added to providers.
--services
--myNewServiceFolderName
serviceOne.service.ts
serviceOne.service.spec.ts