Angular:如何知道表单是否恢复到初始状态?

时间:2017-11-04 06:28:03

标签: angular angular2-forms angular2-formbuilder

我有一个具有一些默认值的被动表单,并且想要禁用保存按钮,直到用户更改某些内容并且用户已将其更改回初始状态。

我可以订阅valuechanges,但我想知道一些更改(用户还原更改后)表单是否恢复到初始状态并禁用保存按钮。

我无法使用Form.dirty,因为一旦用户更改了某些内容就会变脏,而如果用户还原了他的更改则不再pristine

JSON.stringify之外的其他方式比较吗?

1 个答案:

答案 0 :(得分:0)

我必须这样做,并坚持“哈希”解决方案。 请注意,我没有彻底检查对perf的影响。 我曾经检测过8个较大形式的平均子形式的变化而没有滞后,但仍然要谨慎。

让我解释一下:

  • 首先,我找到了我能找到的最快,最轻的哈希方法,并从加里法院选择了murmurhash

  • 然后,当我的数据被加载时,我存储了我原始形式的哈希。

  • 接下来,在表单中的每个值更改事件中,我将其哈希并将结果与​​存储的pristine哈希值进行比较。

  • 瞧瞧!

我希望它有所帮助。