如何在Angular 2 Reactive形式中为fb.array元素使用patchValue

时间:2017-12-14 20:09:12

标签: angular forms typescript reactive

我有一个反应形式:

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)

但这不正确。

1 个答案:

答案 0 :(得分:0)

按照总是的方式,在发布问题之后我立即在另一个论坛中提出了答案(谢谢你和thereysuperstar!)

this.myForm.get(`items.${index}.${key}`).patchValue(value)

我错过了items${index}

之间的点

那就行了!