出现错误信息“属性'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'上不存在。”。