如何创建角材料对话框工厂?

时间:2018-09-12 06:58:22

标签: angular dialog angular-material factory

我在一个组件中有几个对话框。它们看起来几乎都相同,所以我想创建一个函数来调用带有不同消息的不同对话框。这是我已经想出的: 当前对话框调用:

 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 :(得分:1)

好吧,这并不困难:) 实际上,我不需要componentInstance。相反,我需要在对话框组件中关闭对话框,并在父组件中关闭afterClose。效果很好