Ich bin dabei, eine Lösung zu finden.Einfache Mathematik auf Modellfelder in Angular2
Ich habe das folgende Modell, geladen über ein Versprechen durch einen Dienst.
export class Something {
id: number;
someTime: string;
items: [
{
id: number;
description: string;
unit: string;
portion: number;
std: number;
}
]
}
Es Mock Daten hat:
const SOMETHINGS: Something[] = [
{
id: 0,
someTime: 'Now',
items: [
{
id: 0,
description: 'A',
unit: 'ml',
portion: 275,
std: 64
},
{
id: 1,
description: 'B',
unit: 'g',
portion: 50,
std: 378
},
....
]
}
]
Die tatsächlichen Werte sind irrelevant, aber ich brauche jeden Abschnitt und std Werte zuzugreifen. Multipliziere sie und summiere sie schließlich zusammen.
Wie so:
275 * 64 = 17600
50 * 378 = 18900
total = 36500
In meiner Komponente Ich mag so die zurückgegebenen Daten zu einem lokalen Array zugeordnet habe.
Dieser Wert befindet sich nicht in einem wiederholten Abschnitt meiner Vorlage, so dass ich keinen Ansatz vom Typ * ngFor verwenden kann.
Es wäre logisch erscheinen, etwas zu verwenden, wie:
calcTotal(){
let totals:array<Number>;
let gross:number = 0;
this.something.forEach((items) => total.push(items.portion * items.std));
totals.forEach((total:number) => gross += total));
return {
total: totals;
}
}
Aber das funktioniert nicht ..
ich einfach nicht wissen, wie die einzelnen Elemente zugreifen und Auszug die zwei Werte multiplizieren sie, speichern sie für später extrahieren das nächste Paar und so weiter. Dann nimm endlich alle Ergebnisse und summiere sie und übergebe sie zur Ansicht.
Jede Hilfe wäre willkommen.
Steve
Danke für Ihre Antwort. Zwei Punkte - zuerst verwende ich Promises in meinem Service Ich bin nicht vertraut mit der Subscribe-Methode, und Ihre Methoden scheinen nichts zurückzugeben. Fehle ich etwas Offensichtliches hier? – Steve
Vergessen Sie oben, ich habe Ihre calculateValues-Methode innerhalb einer Utility-Klasse ähnlicher mathematischer Operationen verwendet. – Steve