我有一个自定义组件:
<my-component [control]="..."></my-component>在这里,控制被定义为:
@Input() control: FormControl;的用法:
this.myFormGroup = new FormGroup({
name: new FormControl('')
});
<my-component [control]="myFormGroup.controls.name"></my-component>错误:
角10严格模式抱怨"myFormGroup.controls.name“不是FormControl。
“控件”在FormGroup中定义为一个对象,其中每个字段都是AbstractControl类型的:
// forms.d.ts
export declare class FormGroup extends AbstractControl {
controls: {
[key: string]: AbstractControl;
};
// ....
}这段代码可以在运行时工作,但不编译。
解决这个问题最好的办法是什么?
发布于 2020-06-30 17:24:49
过去,我通过在表单组之外保留对表单控件的引用来避免这种情况。
例:
this.nameControl = new FormControl()
this.myFormGroup = new FormGroup({
name: this.nameControl,
});发布于 2020-06-30 19:07:50
另一种方法是在输入中使用setter。在组件中(*)
control:FormControl //declare a variable
@Input('control') set _control(value:AbstractControl) //<--here expect an AbstracControl
{
this.control=value as FormControl
}stackblitz中的一个愚蠢的例子
(*)我选择了@Input('control') set anyfunctionName不更改组件的方式
https://stackoverflow.com/questions/62662863
复制相似问题