Angular 和反应式表单数组在表单数组中设置表单控件值给出错误必须为表单控件名称提供一个值

Angular and Reactive form arrays setting a form ontrol value inside form array giving error of must supply a value for form control name

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

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

其中 i 是应该进行更改的索引,oldFr 是要设置的值。

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

我试过了:

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

但是我遇到了以下错误:

ERROR Error: Must supply a value for form control with name: 'fr'

Cannot read property 'at' of null

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

听起来你有一个 FormGroup,它的键包含一个 FormArray,它本身包含一个 FormGroups 数组。

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

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