У меня есть глобальная диалоговая / модальная служба, которая принимает TemplateRef и правильно отображает это представление в диалоговом окне, когда я его создаю. Это отлично работает, если я вызываю этот диалог из компонента, где я могу ссылаться на TemplateRef из DOM моих компонентов с помощью <ng-template>
. Однако мне нужно вызвать это диалоговое окно из моей службы GlobalErrorHandler и динамически создать TemplateRef программно в службе, после чего я могу взять эту TemplateRef и передать ее службе диалогового окна для отображения.
У меня не было удачи с этим вообще, и любая помощь будет принята с благодарностью!
Вот фрагмент моей последней попытки:
const RENDERER = this._rendererFactory.createRenderer(null, null);
const CONTEXT = RENDERER.createElement('h1');
CONTEXT.innerHTML = 'Hi I am a dialog';
const DIALOG = this.injector.get(GlobalDialogService);
let DIALOG_CONTENT: TemplateRef<any>;
let view = DIALOG_CONTENT.createEmbeddedView(CONTEXT);
DIALOG.instantiateDialog(new GlobalDialogSettings(view.context, 'Test Header', false));
DIALOG.dialogVisiblityChange.pipe(take(1)).subscribe((isVisible: boolean): void => {
if (!isVisible) {
// do some stuff here
}
});