【发布时间】:2019-09-18 17:48:49
【问题描述】:
我有一个动态数据列表,每个元素都显示为一个复选框。 我检查的元素保存在一个数组中。保存数组后,我希望在按下按钮时取消选中所有选中的复选框,但它不起作用。
我想在保存数组后取消选中选中的复选框。请帮我找到解决方案。谢谢。
ts 文件:
export class AppComponent {
userRoleListTemp: any = [];
userRoleListToSave: any = [];
checkedInfo: any;
appUserRoleList: any = [
{id: '1', roleName: 'SETUP_ROLE'},
{id: '2', roleName: 'ENTRY_ROLE'},
{id: '3', roleName: 'SEATPLAN_ROLE'},
{id: '4', roleName: 'MARKSENTRY_ROLE'},
{id: '5', roleName: 'APPLICANT_ROLE'}
];
constructor() {}
onChangeRole(userRole: string, isChecked) {
this.checkedInfo = isChecked;
if (isChecked.target.checked) {
this.userRoleListTemp.push(userRole);
} else {
let index = this.userRoleListTemp.indexOf(userRole);
this.userRoleListTemp.splice(index, 1);
}
}
checkedEvnt() {
this.checkedInfo.target.checked = false;
}
}
html 文件:
<h1>Unchek All Roles</h1>
<div class="form-check" *ngFor="let appUserRole of appUserRoleList">
<input class="form-check-input" name="{{appUserRole.roleName}}"
type="checkbox" id="{{appUserRole.roleName}}"
(change)="onChangeRole(appUserRole.roleName, $event)">
<label class="form-check-label" for="{{appUserRole.roleName}}">
{{appUserRole.roleName}}
</label>
</div>
<button (change)="checkedEvnt()">Uncheck All</button>
<pre>{{ userRoleListTemp | json}}</pre>
【问题讨论】:
-
如果您使用角度反应形式,请遍历所有复选框控件并取消设置值。
-
有两种方法。修改您的数据并添加一个您将绑定到
checked属性的属性。或者为您的复选框使用模板变量并在您的 .ts 文件中访问它们。我相信答案中都提到了这两种选择。选择你觉得舒服的就行了! -
@monir,为什么不使用 [(ngModel)] 更简单,看我的回答
标签: javascript html angular typescript checkbox