我试图在一个 formarray 中推送另一个 formbuilder,但它给了我一个错误,因为我认为在初始化代码时数组中没有项目,因此没有控件。错误是属性“控件”在
之后类型“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(...);
关于Angular2 : Property 'controls' does not exist on type 'AbstractControl' . 通过索引访问格式数组中对象的 .control 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950360/