我襯衫的數組的數組中的每個項目的總價值,每件襯衫都有一個價格,我想用角2.獲取與角2
這讓所有的襯衫的總價格是我的數據是這樣的:
shirts: [
{
name: 'shirt 1',
cost: '20'
},
{
name: 'shirt 2',
cost: '10'
},
{
name: 'shirt 3',
cost: '10'
}
]
我想然後添加成本一起顯示在我的組件這大致在那裏我有這麼遠:
export class ShirtsListComponent {
shirts: Shirts;
constructor(@Inject(Shirts) csp: Promise<Shirts>, cdRef: ChangeDetectorRef) {
csp.then((cs) => {
this.shirts = cs;
cdRef.reattach();
});
for (var shirt in this.shirts) {
console.log(shirt);
}
}
}
麻煩的是,console.log(shirt)
什麼也沒有返回,即使它確實如此,我不確定如何將新的shirt
項目添加在一起。這個問題的另一個要素是我應該在組件上還是在服務中這樣做?
編輯: 我做了如下的變化,但我得到0
,我應該得到40
HTML:
<ul class="list-group">
<li class="list-group-item" [shirtListItem]="shirt" *ngFor="#shirt of shirts"></li>
</ul>
<pre>{{totalShirts}}</pre>
更新ShirtComponent:
export class ShirtListComponent {
shirts: Shirts;
totalShirts:number = 0;
constructor(@Inject(Shirts) csp: Promise<Shirts>, cdRef: ChangeDetectorRef) {
csp.then((cs) => {
this.shirts = cs;
cdRef.reattach();
this.shirts.forEach(s => this.totalShirts += s.cost);
});
}
}
非常好的答案Abdulrahman感謝包括關於服務和組件的解釋真的很有幫助,我認爲最終我會通過服務來做到最好,但是我測試了你的建議,並且我得到了'0',這在我看來是錯誤的。期待'40'我在上面的編輯中添加了我的更改。 – Daimz
你確定csp是一個承諾嗎?它解決了嗎? – Abdulrahman
@Daimz對不起,我忽略了這個問題。在你的json中,成本類型是字符串。它應該是一個數字,我會更新我的答案的細節 – Abdulrahman