如何迭代可观察到的 firebase2 列表?
How to iterate over a firebase2 list observable?
我有一个可观察对象列表,我正在尝试迭代这些对象以将列表对象 属性 与局部变量进行比较。
我可以在模板中遍历列表中的对象,但在组件逻辑中看不到如何操作。
如何在模板之外执行此操作?
这是迄今为止我最接近工作的迭代器。
constructor(af: AngularFire) {
this.competitors = af.database.list('/competitors');
}
this.competitors.forEach(competitor) {
console.log(competitor);
}
很抱歉,如果这个问题构造不当,我对 Angular2 和 Firebase 还是很陌生。
this.competitors.forEach(competitor) {
var competitorValue = competitor.val();
console.log(competitorValue);
competitorValue.forEach(sub){
console.log(sub.val());
}
}
这将让您解析所有分支。
您在这里使用的是 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)
)
});
在订阅中用next
迭代:
this.transactions.subscribe({
next(competitors) {
competitors.forEach(competitor => {
console.log(competitor);
});
},
error(err) { console.log('errors already caught... will not run'); }
})
我有一个可观察对象列表,我正在尝试迭代这些对象以将列表对象 属性 与局部变量进行比较。
我可以在模板中遍历列表中的对象,但在组件逻辑中看不到如何操作。
如何在模板之外执行此操作?
这是迄今为止我最接近工作的迭代器。
constructor(af: AngularFire) {
this.competitors = af.database.list('/competitors');
}
this.competitors.forEach(competitor) {
console.log(competitor);
}
很抱歉,如果这个问题构造不当,我对 Angular2 和 Firebase 还是很陌生。
this.competitors.forEach(competitor) {
var competitorValue = competitor.val();
console.log(competitorValue);
competitorValue.forEach(sub){
console.log(sub.val());
}
}
这将让您解析所有分支。
您在这里使用的是 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)
)
});
在订阅中用next
迭代:
this.transactions.subscribe({
next(competitors) {
competitors.forEach(competitor => {
console.log(competitor);
});
},
error(err) { console.log('errors already caught... will not run'); }
})