问题:*ngFor 指令中复选框的双向数据绑定(bind)
我有一个模板驱动的表单,其中我使用 *ngFor 循环几个单选按钮。基于一键,我在页面加载时在禁用状态的单选按钮旁边显示复选框。如果用户单击单选按钮并且它有相应的复选框,我将启用其状态。然后我可以单击复选框。
但是,我希望能够在用户单击另一个单选按钮时禁用先前的复选框并重置其值,从而传递正确的表单值。 (我在 beloe 代码演示网址中将它们显示为 json)
演示代码示例:https://stackblitz.com/edit/angular-ba8pfz
如果您看到演示代码,如果我在“Marvel Heroes”和“Dc Heroes”之间切换,我应该能够重置该复选框
感谢您的时间和建议。
最佳答案
您不能简单地将 checked
属性设置为 false,因为这会将内容 checked
属性设置为空字符串 - 这相当于 true 或Checked。因此,复选标记消失,但控件的 bool 状态未更改。必须更改控件的 bool 状态。一种简单的方法是在控件上生成单击或更改事件。
试试这个:
enableRecursive(event, recursiveChk: boolean) {
let clickEvent = new MouseEvent('click');
this.recursiveChk.map((elem) => {
if (elem.nativeElement.checked) {
elem.nativeElement.dispatchEvent(clickEvent);
}
elem.nativeElement.disabled = true;
if (`recursive_${event.target.id}` === elem.nativeElement.id) {
elem.nativeElement.disabled = false;
}
});
}
关于javascript - 在 Angular 6 上为 *ngFor 内的输入类型复选框启用双向数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112654/