2017-10-06 65 views
-1

我想獲得'表'列(getShotsTotal),'forEach'的總和在Ionic1中工作正常,但在Ionic2中失敗,任何幫助都會讚賞。我認爲可能需要標準的「循環」,但作爲新手,我不確定正確的方法和代碼。在angular2中得到一個表列'for循環'的總和

HTML:

<tr class="row header" *ngFor = "let par of Course; let i=index" > 
<td class="col">{{i +1}}</td> 
<td class="col1">{{par.Index}}</td> 
<td class="col">{{par.Par}}</td> 
<td class="col2">{{getPoints(par)}}</td> 
<td class="col">{{getShots()}}</td> 
<td class="col3" ><select [(ngModel)]="par.sel" 
(change)="onChangeScore(par.sel)"><option *ngFor= "let s of items" >{{s}} 
</option></select></td> 
</tr> 

<tr class="row" style="height:32px"> 
<td class="col">Total</td> 
<td class="col"></td> 
<td class="col"></td> 
<td class="col"></td> 
<td class="col">{{getTotalShots()}}</td> 
<td class="col"></td> 
</tr> 

TS:

getShots(par) { 
let val = this.selectedHcp - par.Index; 
if (val > 17.4) { 
    return 2; 
} else if (val >= -0.5) { 
    return 1; 
} else if (val < -0.5) { 
    return 0; 
} 
}; 


getTotalShots = function() { 
if (!this.Par) { return 0; 
       } 
var total = 0; 
angular.forEach(this.Par, function (item, index) { 
total = total + (this.getShots(item) || 0); 
}); 
return total; 
}; 

回答

0

如果你想循環存儲在this.Par數組,可以直接使用forEach

var total = 0; 
this.Par.forEach((item, index) => { 
    total += this.getShots(item) || 0 
}); 
+0

謝謝您的快速響應,但是我收到以下錯誤:無法讀取屬性'forEach'的未定義 – Bruce

+0

所以屬性this.Par是未定義的,或者可能是在另一個上下文中定義的。你能顯示組件代碼嗎? – Eduardo

+0

不確定你要求的是什麼:導出類CardPage {Par:any; } – Bruce