如果我这样做:
this.formArray = new FormArray([
new FormControl(''),
new FormControl(''),
]);
formControlA() {
return this.formArray.at(0);
}
formControlB() {
return this.formArray.at(1);
}
然后有一个模板使用:
<mat-select [formControl]="formControlA>...</mat-select>
<mat-select [formControl]="formControlB>...</mat-select>
我得到:
类型“AbstractControl〈any,any〉"缺少类型”FormControl“中的以下属性:defaultValue、registerOnChange、registerOnDisabledChange
我不明白---为什么FormArray上的.at()
返回AbstractControl
而不是FormControl
,它实际上是用FormControl
示例化的?
我以为选角不好?我不明白我怎么能在不选角的情况下做这类事情?
formControlA() {
return this.formArray.at(0) as unknown as FormControl;
}
1条答案
按热度按时间unhi4e5o1#
AbstractControl
至少有3个内置子类:FormControl
FormArray
FormGroup
在一些用例中,
this.formArray.at(0)
可以合法地返回FormGroup
或FormArray
(例如,如果您嵌套一些表单)。由于不能保证
this.formArray.at(0)
是FormControl
,因此必须进行强制转换。有一个例外:如果你事先知道
FormControl
的数量(但我不明白为什么在这种情况下你需要一个FormArray
),你仍然可以单独示例化FormControl
变量: