我有两个可观察到的针对HTTP API的工作。
一个人在索要地方,第二个事件。
要求事件的一个返回:
的哈希place_id => events_arr
和我的代码显示
<ng-container *ngFor="let place of placesData">
<ion-item>
<h1>{{place.name}}</h1>
<ion-slides>
<ng-container *ngFor="let event of eventsData[place.id]">
<ion-slide>
<h1>{{event.title}}</h1>
</ion-slide>
</ng-container>
</ion-slides>
</ion-item>
</ng-container>
我的问题是placesData
可观察的速度比eventsData
快,因此eventsData[place.id]
提出了以下例外:
TypeError: Cannot read property '12' of undefined
有什么想法?
选项1将使用 *ngIf
作为@mickdev已通过注释指向的@mickdev。
选项2是使用forkJoin()
。
Observable.forkJoin(
yourPlacesFunctionReturningAnObservable(),
yourEventsFunctionReturningAnObservable())
.subscribe(result => {
this.placesData = result[0];
this.eventsData = result[1];
});
forkJoin
将"等待"取消直到所有可观察到的东西都完成。
文档:https://www.learnrxjs.io/operators/combination/forkjoin.html
so:https://stackoverflow.com/a/42373283/3631348