getActiveId
函数将根据重新调整的ID返回ID
,我需要使用函数getOpenIssues
进行另一个HTTP调用以获取数据。
因此,在我的组件中,我订阅了这些功能,可以看到ID
返回了getActiveId
。
我将ID
传递给了getOpenIssues
函数,它抛出的id未定义。
通过net搜索之后,无法访问预订方法之外的变量。
在这种情况下,如何将ID传递给其他功能?
请帮助,我无法继续进行。
Service.ts
getActiveId() {
return this.http.get<any>(apiUrl);
}
getOpenIssues(id: string) {
return this.http.get<any>(Url);
}
Component.ts
this.service.getActiveId()
.subscribe(response => this.id = response.id) // Returns ID 22407
this.service.getOpenIssues(this.id) // Should pass the ID 22407
.subscribe((response) => { })
答案 0 :(得分:1)
在您的.component.ts
中,由于两个函数都是异步的,因此您的getOpenIssues
在getActiveId
完成之前被调用。
因此,您可以进行以下更改:
this.service.getActiveId()
.subscribe(response => {
this.id = response.id;
this.service.getOpenIssues(this.id).subscribe(issues=>console.log(issues));// Returns ID 22407
})
您还可以查看RxJS的不同map
运算符
this.service.getActiveId()
.concatMap((id)=>this.service.getOpenIssues(id))
.subscribe(issues=>console.log(issues))
答案 1 :(得分:0)
组件可以具有2种方法getActiveId()和getOpenIssues()。现在我们需要调用getActiveId(),该方法将根据服务的响应来调用第一个服务,并调用相同组件的另一个方法(如果需要,它将调用另一个服务)。
getActiveId() {
this.service.getActiveId()
.subscribe(response => {
this.id = response.id;
this.getOpenIssues();
});
}
getOpenIssues() {
this.service.getOpenIssues(this.id)
.subscribe(issues=> //Your logic);
}`