angular - 在 Angular 中正确实现“保存表单并关闭”按钮
问题描述
我需要实现一个按钮,一旦单击,它将提交表单并返回历史记录的最后一页。回到最后一页很简单,我只需要这样做
this.location.back();
我的问题是执行 this.location.back() 时会触发 CanDeactivate。canDeactivate 方法目前只是检查表单是否脏,如果是,将显示“您有未保存的更改”对话框,您必须单击“离开”按钮才能返回上一页。这种行为会让客户感到困惑,尤其是在成功保存或提交表单的情况下。
我打算做的是.. 提交表单后,我将模型或表单的 isDirty 属性设置为 false 或将表单标记为原始或重置表单,无论哪一个可能(我刚开始在角度编码所以请耐心等待我(哈哈),这样当 canDeactivate 被触发时,它将不再看到表单是脏的,因此不会显示“未保存的更改”对话框。
我还没有开始在这部分编码,但我想知道这听起来是否是一种可以接受且可行的方式来实现这种功能。
谢谢!
解决方案
提交表单后,只需检查它是否已成功发布,然后重新设置表单并使用位置
this.myAPI.post(this.myForm.value).subscribe(res=>{
console.log(res)
this.myForm.reset()
this.location.back()
})
推荐阅读
- php - 在 Woocommerce 3 中保存时发送带有附加帐户字段值的自定义电子邮件
- python - Python QApplication分段错误
- sass - 如何在 Element BEM Scss 中选择 nth-child
- html - 如何在不使用 CSS 的情况下将 3 个链接放在 HTML 的同一行
- ionic-framework - Ionic 3 NavParams 将数据从第 1 页推送到第 3 页
- c# - 在 powershell 中编写 Azure 函数
- keras - 如何在 Keras 中使用带有加权验证损失的 ModelCheckpoint()
- r - 无法将 tidyverse 代码从子集应用到整个数据
- javascript - 将递归函数转换为递归箭头函数
- r - 为什么 ifelse 和 if 语句不一样?