【发布时间】:2017-07-16 12:58:59
【问题描述】:
我正在开发以下组件:
import {BudgetItem} from "../models/budget.model";
import {Injectable} from "@angular/core";
import {FirebaseListObservable, AngularFire, FirebaseObjectObservable} from "angularfire2";
@Injectable()
export class BudgetService{
public ausgaben:number;
public einnahmen:number;
public budgetArray = [];
private budget:FirebaseListObservable<any>;
private budgetItemToUpdate;
constructor(private af:AngularFire){
this.budget = af.database.list('/Budget');
this.ausgaben = this.getAusgaben();
this.einnahmen = this.getEinnahmen();
this.budget.subscribe(items => {
// items is an array
items.forEach(item => {
this.budgetArray.push(new BudgetItem(item.zweck,item.betrag,item.ausgabe));
});
});
}
//Nimmt ein BugetItem als Parameter und fügt dieses der Datenbank als neuen Datensatz bei
addToBuget(item:BudgetItem){
this.budget.push({zweck:item.zweck,betrag:item.betrag,ausgabe:item.ausgabe});
}
//Nimmt den Key eines Objekts und löscht das jewelige Objekt aus der Datenbank
removeFromInventar(key:string){
this.budget.remove(key);
}
//Synchronisiert ein bestehendes Objekt mit der Datenbank
updateBudgetItem(item){
this.budgetItemToUpdate = this.af.database.object("Budget/" + item.$key)
this.budgetItemToUpdate.update({zweck:item.zweck,betrag:item.betrag,ausgabe:item.ausgabe});
}
//berechnet die totalen Einnahmen. Als Anfangswert wird 2500(Budget) gesetzt.
getEinnahmen(){
this.einnahmen = 2500;
console.log(this.budgetArray);
for(let item of this.budgetArray){
if(item.ausgabe === "Einnahme"){
this.einnahmen = this.einnahmen + item.betrag;
}
}
console.log(this.einnahmen);
return this.einnahmen;
}
//berechnet die totalen Ausgaben. Als Anfangswert wird 0 gesetzt.
getAusgaben(){
this.ausgaben = 0;
console.log(this.budgetArray);
for(let item of (this.budgetArray)){
if(item.ausgabe === "Ausgabe"){
this.ausgaben = this.ausgaben + item.betrag;
}
}
console.log("Ausgaben: " + this.ausgaben)
return this.ausgaben;
}
}
我可以建议将我的项目推送到数组中,但我想将个别对象的项目属性“Betrag”相加并显示它们的总和。
我的错误在哪里,或者您有什么建议可以让代码正常工作?
【问题讨论】:
-
我不确定我是否理解您的问题。 从概念上讲您有一个带有
betrag属性的对象的异步列表,并且您想将所有betrag属性相加? -
没错,但是我对加法部分的实现有问题。
标签: arrays angular typescript firebase firebase-realtime-database