2016-07-24 138 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()); 
    } 
} 

这会让你解析所有的分支。