我们有一个自动保存和一个特定表单的显式保存(它是一个长形式,我们不希望用户丢失数据)。对于显式保存,无效数据将阻止保存发生,并且不会将XHR发送回服务器。但是,对于自动保存,我们希望保存数据(如果可能),而不管前端验证。
我们需要做的是,如果在后端保存成功,前端应该将表单标记为不再脏。但是......这是贴纸 - 它应该不从表单中删除任何验证错误/错误消息。
从我所看到的(或者至少从我理解的内容)开始,。$ setPristine()将使表单变脏,但问题是,它也会删除验证错误。
有没有办法在不删除验证错误的情况下解压缩表单,以便在已经执行保存时自动保存不会运行,但是这样用户仍然可以获得哪些字段无效的反馈,以便它们可以可以解决问题吗?
谢谢!
答案 0 :(得分:4)
表单的$pristine
/ $dirty
个状态未与$valid
/ $invalid
个状态相关联。
不应删除您的错误消息(除非您在显示/隐藏消息的情况下使用$pristine
/ $dirty
。)
因此,您可以在自动保存功能中调用FormController的$setPristine()
方法,该方法将“弄脏”表单,但不会影响验证和错误消息。
另请参阅此 short demo 。
<子>
例如: -
*在上面的小提琴中,在一个字段中输入内容(因此它变为有效并且表单变脏)
*启用Save
按钮
*按Save
按钮将表单的状态设置为$pristine
,因此按钮被禁用(这模拟了自动保存)。
*虽然错误消息仍然可见(并且表单的有效性状态不会改变)。
子>