可能的原因是调用open方法时使用了双击事件或者在多个不同的地方同时调用了该方法。可以通过添加一个布尔值变量来避免重复弹出,或者将open方法放到一个较高的级别组件中调用,以确保只有一个实例存在。示例如下:
在 dialog 组件中添加 isOpen 变量:
export class DialogComponent {
isOpen = false;
constructor(private dialog: MatDialog) { }
openDialog() {
if (!this.isOpen) {
this.isOpen = true;
const dialogRef = this.dialog.open(DialogContentComponent);
dialogRef.afterClosed().subscribe(() => {
this.isOpen = false;
});
}
}
}
这样就能避免重复弹出了。