我该如何管理默认复选框状态

时间:2018-06-12 11:46:55

标签: angular

我有一系列类别。我还有一系列经过检查的类别。

[[cat], [god, dog]] true true [[cat], [god, dog]] 包含所有类别

categories包含应检查的所有category_id

以下是代码:

categoriesSelected

我的想法是检查<div *ngFor="let category of categories"> <input type="checkbox" class="custom-control-input" [id]="category.id" [checked]="categoriesSelected.findIndex(elem => { return elem.id === category.id }) "> <label class="custom-control-label" [for]="category.id">{{ category.name }} /> </div> 数组中是否找到类别的当前ID并将其绑定到categoriesSelected属性

但它不起作用。

任何人都知道如何修复它?

2 个答案:

答案 0 :(得分:1)

你可以试试这个,利用includes功能

<div *ngFor="let category of categories">
   <input type="checkbox" class="custom-control-input" [id]="category.id"
        [checked]="categoriesSelected?.includes(category.id) ">
   <label class="custom-control-label" [for]="category.id">{{ category.name }} />
</div>

如果在{for循环运行

之前初始化categoriesSelected,这将起作用

答案 1 :(得分:0)

您可以使用isSelected方法绑定[checked],如下所示:

import spacy  
nlp_en = spacy.load("en_core_web_sm")
[x.text for x in doc]

TypeScript代码:

<div *ngFor="let category of categories">
  <input type="checkbox" class="custom-control-input" [id]="category.id"
         [checked]='isSelected(category.id)' />

  <label class="custom-control-label" [for]="category.id">{{ category.name}} </label>
</div>

为了获得更好的效果,您可以设置&#39; categoriesSelected&#39;键入HashSet,并检查id是否包含所选的集合,如下所示:

isSelected(id) {
    let isFound = false;
    this.categoriesSelected.forEach((tempCategory) => {
      if (id === tempCategory.id) {
        isFound = true;
      }
    })
    return isFound;
  }