我在Angular中有一条路由,我传递id
来从我的数据库加载一个元素。在我的组件中,我使用以下代码加载元素:
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(['/']));
this.service.getElement(id)
进行http调用并返回Observable。一切顺利。我现在的问题是我想发出第二个http调用,我不知道在哪里添加第二个服务http调用的代码(它与getElement
的方法类似,接收{{} 1}}作为参数)。
更多信息:理想情况下,第二次http呼叫将与id
呼叫并行发出。它仅取决于getElement
中的id
。
如何使用Observables来完成这项工作?有没有办法让它发挥作用?
答案 0 :(得分:1)
使用@ Maxime的评论我带来了以下代码:
this.route.params
.map((params: Params) => params['id'])
.switchMap((id: number) => {
this.id = id;
return Observable.forkJoin([this.service.getElem(id), this.service.getElemDocs(id)]);
})
.catch((e) => {
return Observable.throw(e);
})
.subscribe(([elem, documents]) => {
this.elem= elemas Models.IElement;
this.elemDocuments = documents;
this.setTitle();
}, () => this.router.navigate(['/']));
这会同时启动两个调用,并等待两者的完成。