我正在实现 Angular 的 CDK 门户来加载动态组件。我能够使用给定的 html 和 app.ts 快速轻松地将组件加载到页面上。
加载组件后,我想访问它的接口方法doSomething(),但是我似乎无法访问已加载的组件。
是否可以访问该组件?
类/接口:
interface IPortalThing {
doSomething(){...}
}
class PortalThingComponent
class OtherPortalComponent
html:
<ng-template [cdkPortalOutlet]="portal"></ng-template>
应用程序.ts
portal: Portal<any>;
...
loadComponent() {
this.portal = new ComponentPortal(PortalThingComponent));
}
我试图通过以下方式给出类型的指示:
portal: Portal<IPortalThing>;
...
loadComponent() {
this.portal = new ComponentPortal<IPortalThing>(PortalThingComponent));
}
但是,由于以下错误,这样做使我无法设置我的 this.portal:
Type 'ComponentPortal<IPortalThing>' is not assignable to type Portal<IPortalThing>'.
我觉得令人费解。