以FormGroup为父元素的自定义表单数组



我有一个用例,我正在创建几个自定义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类型但没有一个和我的问题足够相似。

简而言之,我要问的是:是否有一种方法可以键入数组,其中该数组中的对象具有相同的父类?

我确实理解,理论上我可以在CustomFormGroup1CustomFormGroup2中定义FormGroup的所有方法,但我希望有一种方法我可以得到所需的结果,而不必这样做。

我也试过这样定义它:

formArray: (FormGroup|CustomFormGroup1|CustomFormGroup2|..etc)[] = [CustomFormGroup1, CustomFormGroup2, ...etc];

我得到了同样的警告。

非常感谢您的建议。

提前谢谢你。

要在数组中拥有FormGroup(或FormGroup本身)子类的类型,您可以使用如下命令:

formList: (typeof FormGroup)[] = [CustomFormGroup1, CustomFormGroup2, ...etc]

最新更新