Я бы использовал класс CompnentFactoryResolver для достижения аналогичного поведения. Метод класса resolveComponentFactory динамически разрешает компонент, который вы передаете в качестве параметра. Он также позволяет передавать данные в компонент Dynami c, используя токены внедрения, прослушивать (подписываться) на действие close и извлекать результаты из диалога.
Вот пример того, как может выглядеть api после реализации:
@Component({
selector: 'app-host-modal',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppHostModal {
constructor(public modalService: ModalService) {}
onConfirmCancel(): void {
this.modalService.open(FancyPopupComponent, {
data: { message: 'Are you sure?' },
});
}
}
В этой статье подробно описано, как это реализовать.
Помимо пользовательской реализации, вы можете использовать наложения CDK .
Другой и самый простой вариант - использовать диалоговое окно материалов .