1

如果表单很脏,我想防止用户离开当前页面。虽然这适用于 CanDeactivate 保护,但问题是当我尝试移动到同一父级的另一个子组件时,没有更改路由。这两种情况的唯一共同点是,在这两种情况下,ngOnDestroy() 都会被命中。但是,不幸的是,在 ngOnDestroy 中打开确认对话框(mat-dialog)并不能阻止导航在后台发生。有没有可能的解决方案?

    ngOnDestroy() {

    if (this.form.dirty) {
      const matDialogConfig = new MatDialogConfig();
      .......
      let dialogRef = this.dialog.open(dialogComponent, matDialogConfig);
      dialogRef.afterClosed().subscribe(result => {
        if (result) {
          //submit form
        }
      }, () => {
      });
    }
  }
4

0 回答 0