ランタイムスイッチに応じて、いくつかの角度サービスを動的に構成する必要があります。その後、私のAppModule
に私はMyModule.forRoot(myConfig)
としてこれをインポートします動的モジュール/サービス構成とAOT
@NgModule({
imports: [HttpModule],
providers: []
})
export class MyModule {
static forRoot(config: MyConfiguration): ModuleWithProviders {
return {
ngModule: MyModule,
providers: [
SomeService,
{
provide: SomeOtherService,
useFactory: (some: SomeService, http: Http) => {
switch (config.type) {
case 'cloud':
return new SomeOtherService(new SomethingSpecificForCloud());
case 'server':
return new SomeOtherService(new SomethingSpecificForServer());
}
},
deps: [SomeService, Http]
},
]
};
}
}
:AOT前の日に、私はそれが次のコードを使用して動作するようになりました。
CLIとAngularを更新したため、静的解析ができないため、これはもはやコンパイルされません。私は理由を理解していますが、それを解決する正しい方法はまだわかりません。
私は最初にこのforRoot()
アプローチを悪用しましたか?ランタイムスイッチに応じて、異なるサービスを生成するように、モジュールをどのように記述しますか?
これは唯一の選択肢だと思います。 1つの発言:v4から、あなたは 'OpaqueToken'の代わりに' InjectionToken'を使うべきです。 – mat3e