我有一系列类别。我还有一系列经过检查的类别。
[[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
属性
但它不起作用。
任何人都知道如何修复它?
答案 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;
}