【发布时间】:2020-11-20 15:42:43
【问题描述】:
我有以下代码:
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 并得到所有子问题。然后我将子问题存储在 childIssueMap 中,使用父 ID 作为键,子问题列表作为值。
我不太确定该怎么做。我尝试使用 forkJoin,但我的编辑说它已被弃用,因此我使用了带有 [] 的变体,但这次我收到了您在上面看到的错误。
【问题讨论】:
-
弃用意味着你应该使用 forkJoin([a,b]) 而不是 forkJoin(a,b)
-
冷你提供一个例子?另外,请检查我的编辑,因为我认为我使用 forkJoin 的方式错误。
-
您当前传递一个包含单个元素的数组,即一个包含任何 getChildrenIssues 返回元素到您的 forkJoin 的数组。
-
你也不应该链接订阅。请改用
pipe()
标签: angular typescript rxjs fork-join