我正在尝试在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/