如何解决角度表单-FormControlName在FormArray中不适用于FormGroup
在FormArray中有一个FormArray。
这是var列表的字符串别名列表。
这是表单树结构的一个示例(已过滤到有问题的路径):
(注意:每个{}包括根都是一个FormGroup; [] = FormArray;“” = FormControl)
product_id
现在,我们希望能够为所选变量修改别名。
在用户界面中,您有一个表格,其中每行包含一个带有别名作为选项的选择。在选择旁边,您有一个输入可以修改 selected 别名。
这就是我正在做的事情(缩减到表的vars部分)
{
vars: [
{
aliases: [
{ name: "a",val: "" },{ name: "b",val: "" }
]
}
]
}
在我看来,<ng-container formArrayName="vars">
<ng-container *ngFor="let item of this.vars.controls; let i = index">
<tr [formGroupName]="i">
<ng-container formArrayName="aliases">
<td>
<select #varAliasSelect
(change)="listVarAliasIndex = varAliasSelect.selectedIndex">
<option *ngFor="let val of item.get('aliases').value">
{{val.name}}
</option>
</select>
</td>
<td [formGroupName]="listVarAliasIndex">
<input type="text" formControlName="val">
</td>
</ng-container>
</tr>
</ng-container>
</ng-container>
在更改选择选项时在dom树中已更新。
但是带有listVarAliasIndex
的输入只会更改FIRST别名。
就好像输入被永久绑定到formControlName="name"
控件,甚至认为它应该是vars.controls[i].controls.aliases.controls[0].controls.val
这是怎么回事?我们不能动态更新vars.controls[i].controls.aliases.controls[listVarAliasIndex].controls.val
属性并使子控件反弹到数组中的相应控件吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。