import {Injectable, TemplateRef, ViewContainerRef} from '@angular/core'; @Injectable({ providedIn: 'root', }) export class PortalService { private targets: Map; constructor() { this.targets = new Map(); } addTarget(targetName: string, viewContainer: ViewContainerRef) { this.targets.set(targetName, viewContainer); } attach(targetName: string, template: TemplateRef) { this.getTarget(targetName)?.createEmbeddedView(template); } clear(targetName: string) { this.getTarget(targetName)?.clear(); } private getTarget(targetName: string) { return this.targets.has(targetName) ? this.targets.get(targetName) : null; } }