私はobservableを使ってプロバイダにopaquetokenを設定しようとしています。理由は、私はHTTPプロバイダ(外部JSONファイル)を介して値を読んでいる。ObaqueTokenをオブザーバブルで設定することはできますか?
これは私が明らかにこの文句を言わない作業を
{
provide: SOME_OPAQUE_TOKEN,
useFactory: (configService: ConfigService) => {
configService.getPath('campaigns')
.subscribe((res) => {
???
});
},
deps: [ConfigService],
},
をやろうとしているが、この種の問題のための解決策がある場合、私は思ったんだけど何ですか?
実際にパラメータの1つが非同期に取得されるuseFactoryを使用してサービスを構築することが実際に可能な場合。
それはまったく可能ですか?
編集:ソリューションAppModuleでAPP_INITIALIZER
を使用して:ConfigService負荷で
{
provide: APP_INITIALIZER,
useFactory: (configService: ConfigService) =>() => configService.load(),
multi: true,
deps: [ConfigService, Http],
},
():
public load(): Promise<Configuration> {
let promise =
this.http
.get('config.json')
.map(m => m.json())
.toPromise();
promise
.then(config => this.appConfig = config);
return promise;
}
我々はのAppConfigを設定すると、我々が設定し、それを使用することができます不透明トークン:
{
provide: BASE_PATH,
useFactory: (configService: ConfigService) => configService.appConfig.basePath, deps: [ConfigService],
},
あなたはアプリが初期化される前に、依存関係を解決する必要があります。私は[APP_INITIALIZER](https://stackoverflow.com/search?q=app_initializer)が役立つと思います。 – estus
ありがとう@estusは、これが使われている例がありますか? – Yodacheese
まだ参照できません。あなたは検索を使用することができます.SOにはAPP_INITIALIZERをカバーするたくさんの質問があります。 http://stackoverflow.com/a/38128065/3731501。 – estus