阵列更改时,用ngFor阵列生成的复选框不会更新

时间:2019-01-11 01:58:16

标签: angular checkbox

我有一个需要用复选框表示的项目数组(itemsarray)。我有另一个数组(addItem),其中包含已检查的项目。

每当addItem由于用户选择而在后台更改时,复选框都不会更新。此外,如果从addItem中手动删除了元素,则该复选框不会更新。

<div class="form-group">
   <label class="control-label col-sm-12" for="secname">Choose Your Items</label>
   <div class="col-sm-10" *ngFor="let item of itemsarray; let i=index">
       <input type="checkbox" [checked]='additem.indexOf(item)>-1' (click)='checkditem($event,item)' >{{item.itemname.itemname}}
   </div>
</div>

1 个答案:

答案 0 :(得分:0)

我相信addItem.indexOf(item)在比较引用时会返回-1。

尝试创建一个函数(按属性)检查addItem数组是否包含item对象。

例如

itemChecked(item)
{
    const res = addItem.find(i => i.id === item.id);
     return res !== undefined;
}

在您看来:

<input type="checkbox" [checked]='itemChecked(item)' (click)='checkditem($event,item)'>{{item.itemname.itemname}}