我试图从解析器中的一系列可观察数据中获取所有数据。我首先需要进行http调用以获取所有类型并返回一个数组,我需要循环遍历类型数组并获取每种类型的所有数据。最后,我想一次返回一个数组或每种类型的所有数据(在导航到路线之前)。
getAllTypesDataResolverFunction() {
this.getAllTypes()
.flatMap(data => {
let allTypesData = [];
data.forEach(i => {
if(i.type === 4) {
allTypesData.push({'typeObj': i});
return Observable.forkJoin([this.getDataForType(), this.getMoreDataForType()])
.subscribe(data => {
let arrayLength = allTypesData.length-1;
allTypesData[arrayLength].typeObjData = data;
})
}
})
return allTypesData;
}).subscribe(data => {
return data;
})
}
使用我现在拥有的代码,解析器似乎不完整(或者至少不完整嵌套的observable,因此,为该observable返回的数据在组件中是未定义的。任何人都可以提出解决此问题的方法问题?谢谢!
答案 0 :(得分:0)
您可以查看this great blog article,尤其是名为
的部分中的示例串联和并行组合Observable
这似乎达到了你想要做的。
在您的情况下,您可以在映射数据之前考虑Array.filter
函数,因为您似乎只对类型4的数据感兴趣(并且可能使用枚举而不是幻数)。