动态创建的类型复选框输入不能通过NgModel正确绑定值

时间:2018-05-15 11:24:03

标签: javascript angular

我有一个动态创建的表单,包含在表格中,当我点击同一行的“编辑”按钮时出现。动态表中有很多条件,当编辑行时,它们会显示一些输入。

这些输入的类型和绑定都是动态的。我们来看看这个:

<td  *ngIf="table?.getInputType(column.key) && table?.isInputActive(column.key, rowIndex) && column.key != table?.buttonsColumn">
    <input *ngIf="table?.getInputType(column.key) != 'select' && column.key != table?.buttonsColumn"
        [type]="table?.getInputType(column.key)"
        [(ngModel)]="sortedValue.referenceObject[column.key]">

此绑定适用于两个选项(未包含在此代码段中)和文本字段。但它没有正确绑定复选框输入。它并没有真正获得给定对象内的实际值,因此复选框始终为“false”(尽管值有时为“true”)。因此,勾选框并保存结果不会产生任何变化。

你可以在NgModel中看到的引用完美无缺;我已经检查了它,并且正确放置了此键值对象中涉及的名称。问题出在其他地方,但我不知道在哪里。

任何帮助?

2 个答案:

答案 0 :(得分:2)

这个案例在GitHub上的the issue 7329中进行了讨论,被认为是#34;框架的限制&#34; (问题已经结束)。讨论中提到的一种解决方法是使用条件指令。有关演示,请参阅this stackblitz

<ng-container [ngSwitch]="inputType">
  <input *ngSwitchCase="'checkbox'" type="checkbox" [(ngModel)]="value">
  <input *ngSwitchCase="'password'" type="password" [(ngModel)]="value">
  <input *ngSwitchCase="'email'" type="email" [(ngModel)]="value">
  <input *ngSwitchDefault type="text" [(ngModel)]="value">
</ng-container>

<input *ngIf="inputType === 'checkbox'" type="checkbox" [(ngModel)]="value">
<input *ngIf="inputType !== 'checkbox'" type="text" [(ngModel)]="value">

答案 1 :(得分:0)

您可以尝试提供一个“身份证”。到每个复选框。我在下面的示例中使用了executable foo if (impl(ghc > 7.10) && !foo) || (impl(ghc <= 7.10) && foo) buildable: False 作为id。您可以使用它或给出一些其他唯一值作为id。

rowIndex