Как создать фабрику Angular Material Dialog? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть несколько диалогов в одном компоненте. Все они выглядят примерно одинаково, поэтому я хотел бы создать функцию, которая бы вызывала разные диалоги с разными сообщениями. Вот что я уже придумал: текущий диалог:

 deActivate(user: UsersList) {
     const dialog = this.dialog.open(DeactivateUserDialogComponent, {
         height: '20%',
         width: '50%',
         data: {
             dialogMessage: user
         }
     });
     dialog.componentInstance.onChange.subscribe(() => this.getUsers());
 }

Итак, моя идея - сделать универсальный диалог:

openDialog(dialogName, message) {
     const dialog = this.dialog.open(dialogName, {
         data: {
             dialogMessage: message
         }
     });
     dialog.componentInstance.onChange.subscribe(() => {
         this.getUsers(), dialog.close();
     });
 }

И вызвать метод:

openDialog(userDeleted: UsersList) {
    this.openDialog(DeactivateUserDialogComponent, user);
}

но проблема в dialog.componentInstance "it cannot exist on type {}". Мне нужно componentInstance, чтобы сделать обновление в родительском компоненте (это единственный способ, которым он работает без обновления). Так что же я могу сделать на заводе и не беспокоиться об обновлении?

1 Ответ

0 голосов
/ 12 сентября 2018

Хорошо, это было не так сложно :) На самом деле, мне не нужен компонент Instance.Вместо этого мне нужно закрыть диалог в диалоговом компоненте и afterClose в родительском компоненте.Работает просто отлично

...