4

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 で実行されるのでしょうか?

4

0 に答える 0