我有一个简单的问题: 我可以将接口或抽象类(或者只是至少一个父类)绑定为组件的@Host()吗?似乎DI系统无法解决多态性。
我的界面如下:
export interface Component {
}
来自此界面的和子组件:
...
export class SomeComponent implements Component {
...
}
现在我想创建Directive,并使用Component作为主机,即使我将此指令放在SomeComponent上也是如此。
像:
constructor(private host: Component) { }
答案 0 :(得分:2)
实际上,运行时没有任何对应的TypeScript接口。这意味着您无法将它们用作类型。
如果您在服务中尝试此操作:
1
尝试从其他模块导入时,我们将会定义:
export interface SomeInterface {
someMethod();
}
export class HeroService implements SomeInterface {
(...)
}
这是一个描述这个问题的傻瓜:https://plnkr.co/edit/RT59B0tw40lnq85XMMi7?p=preview。
希望它可以帮到你, 亨利