javascript - 在 Angular 6 上为 *ngFor 内的输入类型复选框启用双向数据绑定(bind)

标签 javascript angular angular-cli angular-cli-v6 two-way-binding

问题:*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/

相关文章:

javascript - Nodejs 后面写的连接套接字如何保存?

angular - 尝试删除或更改 Angular 谷歌地图中 <agm-direction> 默认标记的图标

angular - 调用了如何解决 "Function calls are not supported in decorators but ' StoreModule'。”

Angular CLI v6 : "Unknown option: ' --bh'"

javascript - 如何在 Puppeteer 的 `await page.evaluate(indexTotal => {` 中使用我现有的函数 global.parseData(id, name, url)?

javascript - 如何使用 ng-table 进行服务器端分页?

javascript - webpack 错误 : File to import not found or unreadable: bourbon , 如何解决?

angular - 如何在 Visual Studio Code 中查看 JSCode 生成的文档?

Angular 6 CLI -> 如何制作 ng build build project + libraries

javascript - 元组类型的问题