2016-07-24 141 views
3

我有一個列表可觀察到的對象,我試圖迭代比較列表對象屬性本地變量。如何迭代firebase2列表可觀察?

我可以遍歷模板中列表中的對象,但無法看到如何在組件邏輯中。

我該如何在模板之外做到這一點?

這是我到目前爲止最接近工作迭代器的地方。

constructor(af: AngularFire) { 
    this.competitors = af.database.list('/competitors'); 
} 
this.competitors.forEach(competitor) { 
    console.log(competitor); 
} 

對不起,如果這是一個問題,結構不好,我還是Angular2和Firebase的新手。

回答

4

您正在使用Observable而不是普通的集合。這意味着你必須使用Observable原語,並且通過this.competitors的簡單循環將不起作用。

這本:

this.competitors.subscribe(competitor => console.log(competitor)); 

順便說一下,有一個命名約定來命名,並在最後一個$觀測量,所以它看起來方式如下:

this.competitors$ = af.database.list('/competitors'); 

和:

this.competitors$.subscribe(competitor => console.log(competitor)); 

這將記錄整個競爭對手陣列。如果您想遍歷元素,請執行以下操作:

this.competitors.subscribe(
    competitors => { 
     competitors.map(competitor => 
      console.log(competitor) 
     ) 
    }); 
+0

我會試試這個,並在您確認後將其標記爲答案。謝謝。 – dibs

0
this.competitors.forEach(competitor) { 
    var competitorValue = competitor.val(); 
    console.log(competitorValue); 
    competitorValue.forEach(sub){ 
     console.log(sub.val()); 
    } 
} 

這會讓你解析所有的分支。