如何在 Angular 中使用 patchValue 2 fb.array 元素的反应形式
How to use patchValue in Angular 2 Reactive form for fb.array elements
我有反应形式:
myForm = this.fb.group({
...
}
我通过具有如下功能的按钮更新字段:
(click)="update('someKey',someValue)"
函数看起来像这样:
update(key, value) {
if (key && value && this.myForm.contains(key)) {
this.myForm.controls[key].patchValue(value)
}
}
效果很好,我可以将相同的函数用于任何表单元素,方法是将其名称作为键发送。
但是 - 现在我有一个 fb.array 的形式:
myForm = this.fb.group({
...
items: this.fb.array([]),
}
其中:
items: {"name":"", "description":"")
而且我需要能够以同样的方式更新数组值。
我该如何更改
this.myForm.controls[key].patchValue(value)
要访问 fb.array
?我可以传递我试图访问的数组元素的索引。
所以像这样:
(click)="update(index,'someKey',someValue)"
this.myForm.controls[items(index).controls[key].patchValue(value)
或
this.myForm.get(`items${index}.${key}`).patchValue(value)
但这不正确。
一如既往,在发布问题后我立即在另一个论坛上看到了答案(谢谢你 andreysuperstar!)
this.myForm.get(`items.${index}.${key}`).patchValue(value)
我漏掉了 items
和 ${index}
之间的点
那就行了!
我有反应形式:
myForm = this.fb.group({
...
}
我通过具有如下功能的按钮更新字段:
(click)="update('someKey',someValue)"
函数看起来像这样:
update(key, value) {
if (key && value && this.myForm.contains(key)) {
this.myForm.controls[key].patchValue(value)
}
}
效果很好,我可以将相同的函数用于任何表单元素,方法是将其名称作为键发送。
但是 - 现在我有一个 fb.array 的形式:
myForm = this.fb.group({
...
items: this.fb.array([]),
}
其中:
items: {"name":"", "description":"")
而且我需要能够以同样的方式更新数组值。 我该如何更改
this.myForm.controls[key].patchValue(value)
要访问 fb.array
?我可以传递我试图访问的数组元素的索引。
所以像这样:
(click)="update(index,'someKey',someValue)"
this.myForm.controls[items(index).controls[key].patchValue(value)
或
this.myForm.get(`items${index}.${key}`).patchValue(value)
但这不正确。
一如既往,在发布问题后我立即在另一个论坛上看到了答案(谢谢你 andreysuperstar!)
this.myForm.get(`items.${index}.${key}`).patchValue(value)
我漏掉了 items
和 ${index}
那就行了!