2017-03-01 91 views
2

我有兩個可觀察的工作對http api。
其中一個是要求地點,第二個是要發生的事件。Angular 2嵌套可觀察循環

,詢問事件的一個返回的哈希:

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 

A你有想法嗎?

+2

小巧的黑客'<離子幻燈片* ngIf = 「eventsData」> ...'? – mickdev

回答

4

選項1將使用*ngIf,因爲@ 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

這樣:https://stackoverflow.com/a/42373283/3631348