Angular 2嵌套的可观察循环

时间:2017-03-01 12:13:29

标签: angular ionic2 observable angular2-observables

我有两个可观察的反对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 个答案:

答案 0 :(得分:4)

选项1将使用*ngIf,因为@mickdev已通过评论指出。

选项2将使用forkJoin()

Observable.forkJoin(
   yourPlacesFunctionReturningAnObservable(),
   yourEventsFunctionReturningAnObservable())
.subscribe(result => {
   this.placesData = result[0];
   this.eventsData = result[1];
});

forkJoin将“等待”直到所有可观测量完成。

docs:https://www.learnrxjs.io/operators/combination/forkjoin.html

所以:https://stackoverflow.com/a/42373283/3631348