出现错误信息“属性'controls'在类型'AbstractControl'上不存在。”是因为在访问AbstractControl的controls属性时,该属性不存在。
解决此问题的方法是要确保你在访问的对象是一个有效的FormGroup或FormArray类型。
下面是一个示例代码,演示了如何正确使用FormGroup和FormArray类型,并访问它们的controls属性:
import { Component } from '@angular/core';
import { FormGroup, FormControl, FormArray } from '@angular/forms';
@Component({
selector: 'app-form',
template: `
`
})
export class MyFormComponent {
myForm: FormGroup;
constructor() {
this.myForm = new FormGroup({
items: new FormArray([
new FormControl('Item 1'),
new FormControl('Item 2'),
new FormControl('Item 3')
])
});
}
get itemControls() {
return this.myForm.get('items') as FormArray;
}
}
在上面的示例中,我们创建了一个FormGroup对象myForm,其中包含一个FormArray对象items,它包含3个FormControl对象。然后,在模板中,我们使用formArrayName指令来绑定items的FormControl,并使用*ngFor指令循环显示每个FormControl。
在获取itemControls属性时,我们使用get()方法来获取FormArray对象,并将其类型转换为FormArray,这样就可以访问controls属性了。
这样,你就可以正确地访问controls属性,而不会出现错误信息“属性'controls'在类型'AbstractControl'上不存在。”。