在stackBlitz上发布了一个很好的示例:-)
https://stackblitz.com/edit/angular-f351cx
我在将Firebase中的两个数据库查询合并为一个可观察的,很好地渲染到我的mat-table的麻烦中。
我走的很远。通过返回可观察值,我可以在表中显示一个数据库查询,但是一旦我尝试连接第二个数据库,表中什么也没有显示。
我觉得这很奇怪,因为当我异步/ JSON传递第二个Observable的结果时,结果似乎具有正确的格式。
我在做什么错?我的示例使用http.get()和restcountries.eu,但实际上我正在尝试使其与Firebase一起使用。在我自己的应用程序和本例中,错误/行为都是相同的。
答案 0 :(得分:1)
就像您在调用return of(myArray)
时所观察到的那样,才从第二个http请求中获取值。
如果将.pipe(delay(100));
添加到其中,则会显示表中的值。
代码将为:
this.singleObsDataSource = this.http.get('https://restcountries.eu/rest/v2/regionalbloc/efta')
this.doubleObsDataSource = this.singleObsDataSource.pipe(mergeMap((data: any[]) => {
let myArray = [];
data.forEach(country => {
let url = 'https://restcountries.eu/rest/v2/name/' + country['name'];
this.http.get(url).subscribe(countryInfo=>{
myArray.push(countryInfo[0]);
})
})
return of(myArray).pipe(delay(100));
}))