角度4总和

时间:2017-07-01 20:19:51

标签: angular

我有这个

    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中删除成本时。我不知道是怎么做到的。请帮忙。谢谢! 怎么做到的?

2 个答案:

答案 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