我需要获取ID的ID列表=> this.getIds()并获取其名称 =>使用mergeMap()为ID列表中的每个ID获得getNames(id)。 有人可以在下面检查我做错了什么(无法编译)吗?
在myservice.ts中:
getIds()<any> {
this.http
.post(url1, '')
.subscribe(map(({ Ids }: any) => Ids.map(item => ({Id: item.Id, Name: item.Name }))));
}
getNames():Observable<any[]> {
return this.http
.post(url2, '')
.pipe(map(({ Names }: any) => Names.map(item => ({Sid: item.Id, Name: item.Name }))));
}
在component.ts中:
getIds(): void {
this.myservice
.getIds.pipe(
mergeMap(id => this.getNames(id)),
mergeMap(names => names),
toArray()
)
}
getNames(): void {
this.myservice
.getNames(ids)
.subscribe(val => this.data = val);
}
答案 0 :(得分:0)
您不会从getNames
组件方法中返回任何内容,理想情况下,该方法应该返回一个Observable
getNames(): void {
return this.myservice
.getNames(ids)
}
答案 1 :(得分:0)
您需要从以下位置更改getIds函数的签名:
getIds()<any>
到
getIds(): any