请帮我弄清楚如何使用离子中的AngularFire2来计算来自firebase的对象值的总和。
我正在尝试这样做:
在HTML文件中我想调用函数:
<ion-col col-1>
{{(calculateAverage(student.$key) | async)}}
</ion-col>
在.ts文件中我想做类似的事情,获取对象列表,迭代它并对孩子的值求和并将该值返回给html。
我知道如何使用this.af.database.list
获取列表并使用* ngFor在HTML中显示值,但不知道如何在.ts文件中进行迭代并将值返回给HTML,因为这是异步。
firebase数据示例:
"-KhdUCJAyr7Y4Zz3QOnl" : {
"-KigSgGlWyFQao80DuA0" : {
"value" : "30"
},
"-KigTDI3Nue88If0fdYl" : {
"value" : "70"
}
}
请帮帮我吗?
先谢谢。
答案 0 :(得分:2)
您可以在subscribe
的{{1}}中进行计算。
this.af.database.list
如何在模板中计算和显示的示例:
// suppose you keep the observable
this.items = this.af.database.list('/sample');
// do calculate in observable.subscribe
this.items.subscribe(data => {
data.forEach(item => {
// sum here
calculateSum(item.value);
});
// calculate average here
calculateAverage();
});
在模板中显示计算结果:
sumValue = 0;
averageValue = 0;
// sum values
calculateSum(value) {
this.sumValue = this.sumValue + parseInt(value);
}
calculateAverage(count) {
this.averageValue = this.sumValue / count;
}