首页 文章

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

提问于
浏览
0

我有一个被动的形式:

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

    总是如此,在发布问题之后我立即在另一个论坛上给出了答案(谢谢你们andreysuperstar!)

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

    我错过了 items${index} 之间的点

    那就行了!

相关问题