角材料MatDialog无法关闭

时间:2020-06-09 14:37:13

标签: angular typescript angular-material mat-dialog

我使用MatDialog遇到了一个奇怪的问题。在我的主要组件中,我使用@Injectable服务,该服务运行webworker在后台处理某些内容。处理完成后,该服务将打开MatDialog。在此对话框中,有2个按钮(每个按钮都会关闭对话框)。

close(result: boolean) {
  this.dialogRef.close(result);
}

问题在于单击按钮后它几乎不会立即关闭,有时我甚至需要等待20秒才能关闭它。我注意到在单击按钮并单击其他按钮后,对话框立即关闭(焦点丢失或其他原因?)。 我以为关闭对话框的方式有问题,但是我在主要组件中的onInit方法中运行了它,并且效果很好。这意味着它与异步代码有关。 有谁知道如何解决它?

1 个答案:

答案 0 :(得分:0)

检测您的close方法的更改:

close(result: boolean) {
  this.dialogRef.close(result);
  this.cd.detectChanges();
}

构造函数为:

constructor(private cd: ChangeDetectorRef) {
}

注意到,在我单击按钮并单击其他内容后, 对话框立即关闭(焦点丢失或什么?)

当您移动鼠标或单击时,角度检测会发生变化,结果对话框关闭。您需要做的是手动检查close()方法中的更改。