【发布时间】:2017-07-10 19:30:47
【问题描述】:
我正在使用角度的动态组件。 但是我遇到了一个我不知道如何解决的问题。
我得到了这个界面。
export interface InjectableComponent{
setData(data: any): void;
}
类实现接口。
export class DemoComponent implements InjectableComponent {
setData(data: any): void {
}
}
使用接口作为参数类型的函数。
openComponent(component: InjectableComponent, data: any) {
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(<any>component);
this.placeholder.clear();
let componentRef = this.placeholder.createComponent(componentFactory);
(<InjectableComponent>componentRef.instance).setData(data);
}
调用函数。
openComponent(DemoComponent, null); <-- ERROR
收到此错误:
Argument of type 'typeof DemoComponent' is not assignable to parameter of type 'InjectableComponent'.
Property 'setData' is missing in type 'typeof DemoComponent'.
有人可以向我解释为什么这不起作用吗? 也许是一种解决方法?
【问题讨论】:
-
你可以试试改方法
openComponent(component: Type<InjectableComponent>plnkr.co/edit/bbejmaGKXVpgiRRBo3lE?p=preview -
感谢工作。如果你回答我会接受。 :)
标签: angular typescript interface