首页 > 解决方案 > Angular 和 Reactive 表单数组在表单数组中设置表单控件值,给出错误必须为表单控件名称提供值

问题描述

我需要将反应式表单数组的特定表单控件设置为一个值。我正在使用以下内容:

(<FormArray>this.formGroup.get('test')).at(i).setValue(oldFr);

应该在哪里i进行更改的索引以及oldFr要设置的值。

但是我忘记了每个索引中有多个表单控件。我需要设置的表单控件称为formControlName="fr".

我试过:

(this.formGroup.get('test')).at(i).controls['fr'].setValue(oldFr);

但我有以下错误:

ERROR 错误:必须为表单控件提供一个值,名称为:'fr'

无法读取 null 的属性“at”

如何设置位于控件数组内的表单控件的值?

标签: angularangular-reactive-formsangular7formarray

解决方案


听起来您有一个 FormGroup,其键包含一个 FormArray,该 FormArray 本身包含一个 FormGroups 数组。

const formGroup = new FormGroup({
  test: new FormArray([
    new FormGroup({
      fr: new FormControl('')
    })
  ])
})

formGroup.get('test').at(0).get('fr').patchValue(oldFr)

推荐阅读