我有一个具有多个扩展的基类,如下所示:
export interface ProjectOnePagerDTO {
Widgets: IOnePagerWidget[];
Id: string;
}
export interface IOnePagerWidget extends GridsterItem {
Type: OnePagerWidgetType;
}
export interface OnePagerWidgetTypePicture extends IOnePagerWidget {
ProjectLogo: string;
}
export interface OnePagerWidgetTypeProjectDescription extends IOnePagerWidget {
Text: string;
}
每个扩展(例如 OnePagerWidgetTypePicture)都有自己的组件。在模板中,我循环遍历 ProjectOnePagerDTO 的 Widgets 属性并将每个小部件传递给其组件。OnePagerWidgetTypePicture 的组件如下所示
export class OpwProjectPictureComponent {
@Input() widget: OnePagerWidgetTypePicture;
}
现在我收到以下错误:Property 'ProjectLogo' is missing in type 'IOnePagerWidget' but required in type 'OnePagerWidgetTypePicture'
。
我错过了什么?我是否必须更改 @Input 类型并将其直接转换为组件内部的类型?
方法 1:
尝试使用泛型以便它接受多种类型。
方法 2:
尝试使用根据该类型独有的属性确定类型的函数。
完整代码:
Stackblitz 演示
方法 3:
如果父组件包含这三个值中的任意一个,那么数组不应该指定相同的值吗?
这里我们可以指定一个
type
名称CompositeWidgetType
并将其分配给数组。现在,当您传递到子组件时,它将采用相应的类型,因为该类型可以是这三种类型中的任何一种。