Angular 2:在 ngFor 中默认选中复选框
Angular 2: Default checked on checkbox in ngFor
我正在尝试将默认值设置为选中我的 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" 的不同变体,但似乎没有成功。
使用选中的属性代替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>
这解决了 checked/unchecked 复选框的问题,同时我仍然可以控制变量的变化。
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;
}
}
这个问题拯救我的大脑健康哈哈。但是我在正确答案中做了一个"upgrade":
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;
}
我知道这是一个旧话题,但我最近 运行 遇到了类似的问题,问题出在名称标签上,因为每个复选框都是一样的,表单会报错,您可以将其用作例如:
<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>
改为使用名称标签作为 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>
我正在尝试将默认值设置为选中我的 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" 的不同变体,但似乎没有成功。
使用选中的属性代替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>
这解决了 checked/unchecked 复选框的问题,同时我仍然可以控制变量的变化。
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;
}
}
这个问题拯救我的大脑健康哈哈。但是我在正确答案中做了一个"upgrade":
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;
}
我知道这是一个旧话题,但我最近 运行 遇到了类似的问题,问题出在名称标签上,因为每个复选框都是一样的,表单会报错,您可以将其用作例如:
<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>
改为使用名称标签作为 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>