我正试图在我的ngFor中的复选框上设置默认值。这是我的复选框项目数组:
tags = [{
name: 'Empathetic',
checked: false
}, {
name: 'Smart money',
checked: true
}, {
name: 'Minimal help after writing check',
checked: false
}, {
name: 'Easy term sheet',
checked: true
}];
这是我的HTML
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags;">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tagOptions"
[(ngModel)]="tag.checked">
{{tag.name}}
</label>
</div>
</div>
所需的结果是获得2个选中,2个未选中的框,但所有这些框都未选中。我也尝试了[checked] =“tag.checked”的不同变体,但它似乎没有做到这一点。
这解决了我选中/取消选中复选框的问题,同时我仍然可以控制变量的变化。
HTML
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags; let i = index;">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tagOptions"
(change)="changeCheckbox(i)"
[checked]="tag.checked">
{{tag.name}}
</label>
</div>
.TS
changeCheckbox(tags, i) {
if (tags) {
this.tags[i].checked = !this.tags[i].checked;
}
}
使用checked属性而不是ngModel,
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tagOptions"
[checked]="tag.checked">
{{tag.name}}
</label>
</div>
</div>
我知道这是一个旧线程,但我最近遇到了类似的问题,问题出在名称标签上,因为每个复选框都是一样的,Form抱怨,你可以按如下方式使用它,例如:
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags;">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
[name]="tag.name"
[(ngModel)]="tag.checked">
{{tag.name}}
</label>
</div>
</div>
这个问题拯救了我的大脑健康哈哈。但是我在正确答案中做了“升级”:
HTML:
<div class="form-group">
<div class="form-check" *ngFor="let tag of tags; let i = index;">
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tagOptions"
(change)="changeCheckbox($event, i)"
[checked]="tag.checked">
{{tag.name}}
</label>
</div>
TS:
changeCheckbox(event, index){
this.tags[index] = event.target.checked;
}
使用name标签作为id:
<label class="form-check-label" for="tag{{tag.value}}">
<input
class="form-check-input"
type="checkbox"
id="tag{{tag.value}}"
name="tag{{tag.value}}"
[(ngModel)]="tag.checked">
{{tag.name}}
</label>