我有一个动态创建的表单,包含在表格中,当我点击同一行的“编辑”按钮时出现。动态表中有很多条件,当编辑行时,它们会显示一些输入。
这些输入的类型和绑定都是动态的。我们来看看这个:
<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中看到的引用完美无缺;我已经检查了它,并且正确放置了此键值对象中涉及的名称。问题出在其他地方,但我不知道在哪里。
任何帮助?
答案 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