我在angular中使用了属性绑定来取消选中所有复选框,但它没有按预期工作。 我的期望:当我点击“清除”按钮选择一个或多个复选框后,它应该取消选中所有复选框。 这是我的plunker
isSelected is the boolean variable which i have used to set the 'checked' attribute of checkbox.
模板:
<div *ngFor="let item of items">
<input [checked]="isSelected" type="checkbox">{{item}}
</div>
<button (click)="onClear()">Clear All</button>
组件
private items = ['a', 'b', 'c', 'd'];
private isSelected = false;
constructor() {
}
onClear(){
this.isSelected = false;
}
答案 0 :(得分:1)
在复选框上设置ngModel
,并使用ngModelChange
跟踪更改。还设置辅助阵列以帮助您跟踪已检查状态。这是一个(简化)示例:
HTML
<input [ngModel]="isSelected[i]" (ngModelChange)="onChange(i)" type="checkbox">{{item}}
<强>打字稿强>
isSelected = [];
constructor() {
this.onClear();
}
onChange(i){
this.isSelected[i]=!this.isSelected[i]
}
onClear(){
this.isSelected = [false, false, false, false];
}
答案 1 :(得分:1)
一个解决方案是
<div *ngFor="let item of items">
<input [(ngModel)]="item.checked" type="checkbox">{{item.label}}
</div>
<button (click)="onClear()">Clear All</button>
使用模板:
private items = [ {'label':'a', 'checked': false },
{'label':'b', 'checked': false},
{'label':'c', 'checked': false},
{'label':'d', 'checked': false}];
onClear(){
for ( let cb of this.items ) {
cb.checked = false;
}
}
答案 2 :(得分:1)
首先,你应该知道[checked]不工作,你应该使用[(ngModel)]这个东西,你应该从@ angular / forms导入FormModule。
第二,你应该有多个isSelected变量,因为如果你在选择其中一个时只使用一个isSelected变量,那么所有的复选框都将被选中, 为此你可以在 .ts 文件中使用这样的数组,
items = [{name: 'a', isSelected:false},
{name: 'b', isSelected:false},
{name: 'c', isSelected:false},
{name: 'd', isSelected:false}];
并在 HTML
中<div *ngFor="let item of items">
<input [(ngModel)]="item.isSelected" type="checkbox">{{item.name}}
</div>