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

问题描述 投票:0回答:1

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

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

我不能使用Form.dirty,因为一旦用户改变了某些东西就会变脏,而如果用户已经恢复他的更改则不再使用pristine

除了JSON.stringify之外的任何其他方式比较?

angular angular2-forms angular2-formbuilder
1个回答
0
投票

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

让我解释 :

  • 首先,我找到了我能找到的最快,最轻的哈希方法,并从加里法院选择了murmurhash
  • 然后,当我的数据被加载时,我存储了我原始形式的哈希。
  • 接下来,在表单中的每个值更改事件中,我将其哈希并将结果与​​存储的pristine哈希进行比较。
  • 你在这里!

我希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.