我有一个用例,我正在创建几个自定义formgroup类,有formgroup作为他们的父类,像这样:
export class CustomFormGroup1 extends FormGroup {
//a bunch of custom properties for this FormGroup
constructor() {
super(
{
// initializing CustomFormGroup1's form properties
}
);
}
}
export class CustomFormGroup2 extends FormGroup {
//a bunch of custom properties for this FormGroup
constructor() {
super(
{
// initializing CustomFormGroup2's form properties
}
);
}
}
// etc with a couple more Custom Forms
我要做的是把它放在一个数组谁的类型是FormGroup,即:
formList: FormGroup[] = [CustomFormGroup1, CustomFormGroup2, ...etc]
当我这样做时,我得到以下错误:
TS2740: Type 'typeof ResourceTypeForm' is missing the following properties from type 'FormGroup': controls, registerControl, addControl, removeControl, and 57 more.
我发现了一些问题类似于我的问题,如:类型& # 39;AbstractControl& # 39;缺少以下属性从类型'FormGroup': controls, registerControl, addControl, removeControl,和3个更多或从同一个类继承的通用类的数组的TypeScript类型但没有一个和我的问题足够相似。
简而言之,我要问的是:是否有一种方法可以键入数组,其中该数组中的对象具有相同的父类?
我确实理解,理论上我可以在CustomFormGroup1
和CustomFormGroup2
中定义FormGroup
的所有方法,但我希望有一种方法我可以得到所需的结果,而不必这样做。
我也试过这样定义它:
formArray: (FormGroup|CustomFormGroup1|CustomFormGroup2|..etc)[] = [CustomFormGroup1, CustomFormGroup2, ...etc];
我得到了同样的警告。
非常感谢您的建议。
提前谢谢你。
要在数组中拥有FormGroup(或FormGroup本身)子类的类型,您可以使用如下命令:
formList: (typeof FormGroup)[] = [CustomFormGroup1, CustomFormGroup2, ...etc]