I have tried to use this method cdkPortalOutlet with ComponentPortal, and I used Injector.create to pass data from parent to portal component it works fine.
I want to pass data back from portal component to parent component
html
<div>
<ng-template [cdkPortalOutlet]="defaultComponent"></ng-template>
</div>
ts
defaultComponent!: Portal<any>;
ngViewInit(): void {
this._loadDefaultCompnent(data);
}
private _loadDefaultCompnent(data: any) {
const _data = this._getPortalComponentData();
this.defaultComponent = this._getProtalComponent(_data);
}
private _getPortalComponentDatat(data: any) {
return new ComponentPortal(portalComponent, null, this._portalInjector(data));
}
private _getPortaComponentData() {
return {
data: this.list
};
}
private _portalInjector(data: any) {
return Injector.create({
providers: [{ provide: PORTAL_DATA, useValue: data }]
});
}
How to pass data back from portal component to parent component?