mat-dialog にも同様の問題があり、開閉できませんでした。興味深いのは、コンポーネントを更新してから約 20 分間動作することです。しかし、その後、それは機能しなくなります。
私はこの問題https://github.com/angular/components/issues/9875 とこれhttps://github.com/angular/components/issues/9676 とこれhttps://github.com/angular/components/を読みましたissues/7550#issuecomment-345250406 およびこの StackOverflow の回答: ナビゲーション後に Angular Material Dialog が閉じない
すべてが、「どういうわけか、私のコードは角度ゾーンの外で実行されるため、ゾーンに再度入る必要がある」と提案しました
したがって、次のように変更します。
onButtonClick(){
this.stopRecordingDialog.openDialog();
}
どういうわけか、openDialog を ngZone.run() でラップすると問題が解決します。
onButtonClick(){
this.ngZone.run(() => {
this.stopRecordingDialog.openDialog();
});
}
しかし、それは私が理解していない部分です。私のコードが角度の外で実行されるのはなぜですか? runOutsideAngular を明示的に呼び出すことはなく、onButtonClick は非同期コールバック内にもありません。
実際、 onButtonClick は、次のようなボタン要素に直接関連付けられています。
<button mat-stroked-button (click)="onButtonClick()">
<mat-icon>save_alt</mat-icon>
Export
</button>
では、なぜ私のコードは outsideAngular で実行されるのでしょうか?