在Angular中正确实现“保存表单并关闭”按钮

时间:2019-07-26 10:56:38

标签: angular

我需要实现一个按钮,一旦单击该按钮,它将提交表单并返回历史记录的最后一页。回到最后一页很容易,我只需要这样做

this.location.back();

我的问题是执行this.location.back()时会触发CanDeactivate。 canDeactivate方法当前仅检查表单是否脏了,如果是,则将显示“您有未保存的更改”对话框,并且您必须单击“离开”按钮返回上一页。对于客户端,此行为会造成混乱,特别是如果成功保存或提交了表单。

我打算做的是..提交表单后,我将模型或表单的isDirty属性设置为false或将表单标记为原始表单,或者重置表单,以可能的方式(我刚刚开始编码在角度上,请耐心等待,大声笑),以便在触发canDeactivate时,它将不再看到表单很脏,因此将不会显示“未保存的更改”对话框。

我还没有开始对该部分进行编码,但是我想知道这听起来是否是实现这种功能的可接受且可行的方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

提交表单后,只需检查表单是否已成功发布,然后重置表单并返回使用位置

this.myAPI.post(this.myForm.value).subscribe(res=>{
  
    console.log(res)
    this.myForm.reset()
    this.location.back()  
})

答案 1 :(得分:0)

this.myAPI.post(this.myForm.value).subscribe(res=>{
  
    console.log(res)
    this.myForm.reset()
    this.location.back()  
})