1

如何防止 MatDialog 在外部单击但在我的 Angular 应用程序的所有对话框中关闭?我还意识到,在将 disableClose 设置为 true 后,转义键没有关闭对话框,所以我添加了一个主机侦听器来强制关闭,但这并不是最好的解决方案……对于特定的组件,我可以做到这一点。

export class MyAppComponent {  
  constructor(private dialog: MatDialog){}  
  open() {  
    this.dialog.open(ConfirmComponent, { disableClose: true });  
  }  
 
  @HostListener('window:keyup.esc') onKeyUp() {
    this.dialogRef.close();
  }

}

但是如何为我的应用程序中的所有对话框全局执行它,而不是在每个对话框组件中执行它并应用主机侦听器?

4

1 回答 1

1

您可以在提供程序中定义全局设置

import { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';



@NgModule({
  providers: [
    { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true }}
  ]
})
于 2021-07-08T09:45:40.480 回答