私はこのように、forRoot()関数で共通モジュールを作成したAngular2のV2.2.3Angular2 - 非同期依存性注入
を使用します。ここでは
...
public static forRoot(): ModuleWithProviders {
return {
ngModule: CommonsModule,
providers: [
SomeOtherDependency,
{
provide: ConfigService,
useFactory: ConfigFactory,
deps: [Http]
}
]
};
は私ConfigFactoryです:
export function ConfigFactory(http:Http):Promise<ConfigService> {
return http.get('confg/config.json').map(r => {
return new ConfigService(r);
}).toPromise();
}
私はプロミスとオブザーバブルを返そうとしました。
プロバイダで定義されているSomeOtherDependencyには、ConfigServiceが必要です。問題は、Angularが約束で解決された値を注入するのではなく、それを約束するということです。
私は、promiseが適切な依存関係で解決されてから他の依存関係に注入されるまで、angleを強制的に待機させることができますか?
私はさまざまなアプローチを試してきましたが、常に注入された値は約束しているか、または観察可能です。 iniectorは、返された型のファクトリを無視します。アプリケーション全体が起動する前にjsonファイルをロードする必要があります
の可能性のある重複ここでAPP_INITIALIZERと連携し、工場更新されます/ questions/38127741/angular-2-services-consuming-others-services-before-call-a-method) – estus
この質問へのコメントもチェックしてください。http://stackoverflow.com/questions/40522938/lazy-loading-module -with-app-initializer?noredirect = 1#comment68288686_40522938 – yurzui
私は尋ねる前にこのトピックを見ました。彼らは私のために働かない。 –