我有一个带有内部地图功能的开关地图,它返回多个obersables,如:
this.fb
.getUsersGroupsAsObservable(user.uid, 'contacts')
.switchMap(groups => {
return groups.map(group => this.fb.getJobsbyGroup(group.id));
})
.subscribe(res => {
console.log(res); // emits Observable {_isScalar: false, source: Observable, operator: MapOperator}
this.job$ = res;
});
});
这是正确运行两次并返回两个observable,如:
Observable {_isScalar: false, source: Observable, operator: MapOperator}
Observable {_isScalar: false, source: Observable, operator: MapOperator}
有没有办法返回一个observable列表(思考AngularFireList)然后我可以使用异步管道进行渲染?
更新:@concat帮助我得到了答案(但由于理由答案已删除),我更新了我的代码如下(它现在工作正常):
this.fb
.getUsersGroupsAsObservable(user.uid, 'contacts')
.switchMap(groups =>
combineLatest(groups.map(group => this.fb.getJobsbyGroup(group.id))),
)
.subscribe(res => {
console.log(res);
this.jobs = [].concat.apply([], res);
});
答案 0 :(得分:0)
@concat帮助我解决了这个问题,我需要做的就是使用combineLatest并将我的所有数组合并到一个数组中,然后我将这个数组弄平,可能有一种更简单的方法可以做到这一点但是嘿它有效:
this.fb
.getUsersGroupsAsObservable(user.uid, 'contacts')
.switchMap(groups =>
combineLatest(groups.map(group => this.fb.getJobsbyGroup(group.id))),
)
.subscribe(res => {
console.log(res);
this.jobs = [].concat.apply([], res);
});