Как создать TemplateRef в сервисе - PullRequest
2 голосов
/ 07 мая 2020

У меня есть глобальная диалоговая / модальная служба, которая принимает 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
        }
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...