如何在 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}

之间的点

那就行了!