我有这个
lists = [
{
name: 'Картошка',
cost: 20,
checked: false,
},
{
name: 'Хлеб',
cost: 10,
checked: false,
}
];
cart = [];
check(list: any){
list.checked = !list.checked
if(list.checked) {
this.cart.push(list.cost);
} else{
}
console.log(this.cart);
}
请帮忙。单击复选框(true)时,将成本添加到totalSum。当复选框(false)从totalSum中删除成本时。我不知道是怎么做到的。请帮忙。谢谢! 怎么做到的?
答案 0 :(得分:0)
您应该使用[ngModel]
和ngModelChange()
来处理此问题,如下所示
<div *ngFor= "let list of lists" >
<input type="checkbox" (ngModelChange)="check($event,list)"
[ngModel]="list.checked" />{{list?.name}}
</div>
check(status,list: any){
if(status) {
this.cart.push(list.cost);
}
console.log(this.cart);
}
注意:未完成对其他部分的处理。
<强> LIVE DEMO 强>
答案 1 :(得分:0)
如果你想要总和,我不会使用数组,而是使用变量,例如名为totalSum
totalSum = 0;
在您的迭代中,按照Aravind的建议行事并使用[ngModel]
和(ngModelChange)
:
<div *ngFor= "let list of lists" >
<input type="checkbox" (ngModelChange)="check($event, list.cost)"
[ngModel]="list.checked" />{{list.name}}
</div>
然后您的check
方法将如下所示:
check(isChecked, cost){
if(isChecked) {
this.totalSum += cost;
} else {
this.totalSum -= cost;
}
}
我们只是检查是否选中了复选框,如果是,请添加到总和中,如果不是,则从totalSum
中减去该值。
<强> DEMO 强>