1
私はid
を渡して、データベースから要素をロードするルートを角度で持っています。 this.service.getElement(id)
がHTTP呼び出しを行い、観測を返し角度2のルータパラメータが複数のhttp呼び出しを発行する
this.route.params
.map((params: Params) => params['id'])
.switchMap((id: number) => this.service.getElement(id))
.catch((e) => {
return Observable.throw(e);
})
.subscribe((data: Models.IElement) => {
this.element= data as Models.IElement;
this.setTitle();
},() => this.router.navigate(['/']));
:私のコンポーネントでは、私は次のコードを使用して要素をロードします。それはすべてうまくいく。私が今問題としているのは、2番目のhttpコールを発行したいのですが、2番目のサービスのhttpコールのコードをどこに追加するのかわかりません(getElement
と同様の方法で、id
をパラメータとして受け取ります)。
詳細情報: 2番目のhttpコールは、理想的にはgetElement
コールと並行して発行されます。それはParams
のid
にのみ依存します。
Observablesを使用してこの作業を行うにはどうすればよいですか?それを動作させる方法はありますか?
ここで、2回目の呼び出しを行いますか?それは何に基づいていますか?以前の返答で?ルートparams id?より多くの情報を与えてください – Maxime
それはidに基づいてのみです。理想的には、getElement呼び出しと並列に発行されます。 –
私はあなたに今すぐ解決策を与える時間がありませんが、[Fork Join](http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method)を見てください。 -forkJoin)、それは 'Promise.all'と等価です。あなたが渡したObservablesをすべて購読して、続行する前にすべてのObservablesが終了するのを待ちます。もちろん、それらは並行して開始されます。私はあなたに何かを試してみましょう、後で成功しなければ私は助けます:) – Maxime