4

我对 mat-dialog 有类似的问题,我无法打开/关闭它。有趣的是,在我刷新组件后它可以工作大约 20 分钟。但在那之后,它停止工作。

我读了这个问题https://github.com/angular/components/issues/9875 和这个https://github.com/angular/components/issues/9676 和这个https://github.com/angular/components/问题/7550#issuecomment-345250406 和这个 StackOverflow 答案: Angular Material Dialog not closed after navigation

所有人都建议“不知何故,我的代码在角度区域之外运行,所以我需要重新进入该区域”

因此改变:

onButtonClick(){
   this.stopRecordingDialog.openDialog();
}

不知何故,用 ngZone.run() 包装 openDialog 解决了这个问题。

onButtonClick(){
   this.ngZone.run(() => {
        this.stopRecordingDialog.openDialog();
      });
}

但这是我不明白的部分。为什么我的代码在角度之外运行?我从不明确调用 runOutsideAngular 并且 onButtonClick 也不在异步回调中。

实际上,onButtonClick 是直接与按钮元素绑定的,如下所示:

  <button mat-stroked-button (click)="onButtonClick()">
            <mat-icon>save_alt</mat-icon>
            Export
        </button>

那么为什么我的代码在 Angular 之外运行呢?

4

0 回答 0