我正在尝试在formarray中推送另一个formbuilder,但是它给我一个错误,因为我认为初始化代码时数组中没有项目,因此没有控件。错误是属性'controls'在类型'AbstractControl'之后不存在

(<FormArray>this.loanTypeForm.controls['frequency']).controls[index]

我正在使用 Angular 2.0.0-beta.17
let settingsForm: FormArray = new FormArray([]);
      (<FormArray>this.loanTypeForm.controls['frequency']).push(
        this.formBuilder.group({
          'name': [value, Validators.required],
          'settings': settingsForm,
        })
      );
(<FormArray>this.loanTypeForm.controls['frequency']).controls[index].controls['settings'].push(
      this.formBuilder.group({
        'term': [null, Validators.required],
        'eir': [null, Validators.required],
      })
    );

最佳答案

您可以使用['controls']代替.controls,如下所示:

(<FormArray>this.loanTypeForm.controls['frequency']).controls[index]['controls']['settings'].push(...)

但是为了简化并提供更高的可读性,建议您将其全部更改为:
const control = this.loanTypeForm.get(`frequency.${index}.settings`) as FormArray;
control.push(...);

关于angular - Angular2: 'controls'类型不存在 'AbstractControl'属性。通过索引访问formarray中的对象的.control时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41950360/

10-12 12:57