您可以创建自定义注入器并将其注入您创建的组件门户。
createInjector(dataToPass): PortalInjector {
const injectorTokens = new WeakMap();
injectorTokens.set(CONTAINER_DATA, dataToPass);
return new PortalInjector(this._injector, injectorTokens);
}
CONTAINER_DATA
是由 - 创建的自定义注入器 ( InjectorToken
)
export const CONTAINER_DATA = new InjectionToken<{}>('CONTAINER_DATA');
要使用创建的注入器,请使用 -
let containerPortal = new ComponentPortal(ComponentToPort, null, this.createInjector({
data1,
data2
}));
overlay.attach(containerPortal);
overlay
是OverlayRef
(Portal Outlet)的一个实例
在里面ComponentToPort
,你需要注入创建的注入器 -
@Inject(CONTAINER_DATA) public componentData: any
更多关于这个here。