我需要一张不同Angular 分量的Map。这是Map:
private modals: MapOf<any> = {
addAttribute: AddAttributeModalComponent,
editAttribute: EditAttributeModalComponent,
requestUnit: RequestUnitModalComponent,
requestAttribute: RequestAttributeModalComponent
};
正如你所看到的,我有一个泛型类型MapOf,它是:
export interface MapOf<T> {
[key: string]: T;
}
现在我很困惑< any >,因为很明显这是一个组件的Map,但是我不知道如何设置这个类型,我找不到答案。
ComponentRef不适合这里,因为它无论如何都要求引用。Type Component也不适合,因为我的组件是修饰的,它们包含一些'pure' Component上不存在的方法。
有什么想法吗?
2条答案
按热度按时间y53ybaqx1#
装饰器不会改变类的类型。如果你只是想避免使用
any
类型,让每个组件类扩展相同的抽象类或实现相同的接口。然后你可以使用这个新类型作为泛型类型。例如,另一个可以尝试的方法是创建一个新的联合类型:
2ekbmq322#
**简短回答:根本没有这种事
**详细答案:**我们通过使用
@Component({...})
装饰器提供一些关于Component
的元数据来定义Component
。Angular将使用这些元数据来创建View
,这是我们过去所知道的Component
的低级抽象。因此,下面
@Component
装饰器的Component
接口不是真实的的“组件类”:import {Component} from '@angular/core';
为了实现你想要做的,我认为Yakov Fain's answer是非常正确的。你可以创建一个接口或者一个抽象类,然后从那里实现/扩展你的组件类。
如果你想了解更多关于视图的信息,Ng Wizard有一些关于这个主题的文章: