我对 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 之外运行呢?