さまざまなコンポーネントで使用したいサイト構成を返すエンドポイントがあります。角度アプリケーションでAPIレスポンスを保存
getSiteConfig() {
return this.http.get('/json/siteConfig')
}
私は次のようにこのエンドポイントを呼び出すことができます。このエンドポイントからの値が、私は本当にngrxストアを使用したくない変更するつもりはない
this.siteService.getSiteConfig()
.subscribe(response => {
this.supportedLangs = response.languages;
.... etc
})
。さまざまなコンポーネントで必要なので、私は各コンポーネントのAPI呼び出しをしたくないです。
さまざまなコンポーネントで常にこの設定を使用できるようにする最良の方法はありますか?サービスで
::私は現在動作しているようだ、このメソッドを使用しています
EDIT
public siteconfig = new BehaviorSubject(null);
getSiteConfig(){this.http.get('/json/siteConfig') .subscribe(response => { this.siteconfig.next(response); })
}
私が使用するコンポーネントで
そして:
this.storeService.siteconfig.filter(val => val !== null)
.subscribe(res => this.availableLanguages = res.languages);
は、任意のより良い解決策はありますか?
'(もしthis._supportedLangs ) 'this._supportedLangs'をどこで定義していますか? – AngularDebutant
もう一度見てみると、私はあなたの "response.languages"と同じタイプでなければならないprivate _supportedLangsを宣言しています –
はい、宣言していますが、初期化していませんか?あなたがそれに来ると(!this.supportedLangs)、常にfalseになるので、常にgetSiteConfigのhttpリクエストが作成されます。そして私はそれを望んでいない。 – AngularDebutant