我有一个可观察对象列表,我试图迭代以将列表对象属性与局部变量进行比较。
我可以在模板中循环遍历列表中的对象,但无法在组件逻辑中看到如何。
如何在模板外执行此操作?
这是我到目前为止最接近工作迭代器的方法。
constructor(af: AngularFire) {
this.competitors = af.database.list('/competitors');
}
this.competitors.forEach(competitor) {
console.log(competitor);
}
如果这个问题构造不当,我很抱歉,我对Angular2和Firebase来说还是一个新手。
答案 0 :(得分:7)
你正在使用Observables而不是普通的集合。这意味着您必须使用Observable原语,而this.competitors
上的简单循环将无效。
这个:
this.competitors.subscribe(competitor => console.log(competitor));
顺便说一句,有一个命名约定,用最后的$命名Observables,所以它看起来如下:
this.competitors$ = af.database.list('/competitors');
和
this.competitors$.subscribe(competitor => console.log(competitor));
这将记录整个竞争对手。如果要迭代元素,请执行以下操作:
this.competitors.subscribe(
competitors => {
competitors.map(competitor =>
console.log(competitor)
)
});
答案 1 :(得分:0)
this.competitors.forEach(competitor) {
var competitorValue = competitor.val();
console.log(competitorValue);
competitorValue.forEach(sub){
console.log(sub.val());
}
}
这将让您解析所有分支。
答案 2 :(得分:0)
在订阅中使用next
进行迭代:
this.transactions.subscribe({
next(competitors) {
competitors.forEach(competitor => {
console.log(competitor);
});
},
error(err) { console.log('errors already caught... will not run'); }
})