X 内部调用和 forkJoin 弃用
X inner calls and forkJoin deprecation
我有以下代码:
ngOnInit(): void {
this.issueService.getIssues().pipe(
switchMap(issues => {
this.issuesList = issues;
const observables = this.issuesList.map(issue => this.issueService.getChildrenIssues(issue.id));
return forkJoin([observables]);
})
).subscribe(
(...results) => {
results.map((result, i) => {
this.childIssueMap.set(this.issuesList[i].id, result);
// error: Argument of type '[Observable<Issue[]>]' is not assignable to parameter of type 'Issue[]'.
});
}
);
}
其中:
public issuesList: Issue[];
public childIssueMap = new Map<string, Issue[]>();
我需要先调用“getIssues()”从服务器获取所有问题。然后,当我得到它们时,对于它们中的每一个,我都需要调用一个服务“getChildrenIssues(parentId)”,我在其中传递问题 ID 并获得所有子问题。然后,我将父 ID 作为键,将子问题列表作为值,将子问题存储在 childIssueMap 中。
我不太确定该怎么做。我尝试使用 forkJoin,但我的编辑说它已被弃用,因此我使用了带有 [] 的变体,但这次我收到了您在上面看到的错误。
我通过以下方式使用 forkJoin 解决了这个问题:
this.issueService.getIssues().pipe(
switchMap(
issues => {
this.issuesList = issues;
const observables = this.issuesList.map(issue => this.issueService.getChildrenIssues(issue.id));
const source = forkJoin(observables);
return source;
})
).subscribe(
(children) => children.forEach((child, i) => {
this.childIssueMap.set(this.issuesList[i].id, child);
})
);
我有以下代码:
ngOnInit(): void {
this.issueService.getIssues().pipe(
switchMap(issues => {
this.issuesList = issues;
const observables = this.issuesList.map(issue => this.issueService.getChildrenIssues(issue.id));
return forkJoin([observables]);
})
).subscribe(
(...results) => {
results.map((result, i) => {
this.childIssueMap.set(this.issuesList[i].id, result);
// error: Argument of type '[Observable<Issue[]>]' is not assignable to parameter of type 'Issue[]'.
});
}
);
}
其中:
public issuesList: Issue[];
public childIssueMap = new Map<string, Issue[]>();
我需要先调用“getIssues()”从服务器获取所有问题。然后,当我得到它们时,对于它们中的每一个,我都需要调用一个服务“getChildrenIssues(parentId)”,我在其中传递问题 ID 并获得所有子问题。然后,我将父 ID 作为键,将子问题列表作为值,将子问题存储在 childIssueMap 中。
我不太确定该怎么做。我尝试使用 forkJoin,但我的编辑说它已被弃用,因此我使用了带有 [] 的变体,但这次我收到了您在上面看到的错误。
我通过以下方式使用 forkJoin 解决了这个问题:
this.issueService.getIssues().pipe(
switchMap(
issues => {
this.issuesList = issues;
const observables = this.issuesList.map(issue => this.issueService.getChildrenIssues(issue.id));
const source = forkJoin(observables);
return source;
})
).subscribe(
(children) => children.forEach((child, i) => {
this.childIssueMap.set(this.issuesList[i].id, child);
})
);