如果表单很脏,我想防止用户离开当前页面。虽然这适用于 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
}
}, () => {
});
}
}