2017-11-04 199 views
0

我有一个反应形式,有一些默认值,并希望禁用保存按钮,直到用户已经改变了一些东西,如果用户已经改回到初始状态。Angular:如何知道表单是否回到初始状态?

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

我不能使用Form.dirty,因为一旦用户改变了某些内容而不是pristine,如果用户已恢复其更改,它就会变脏。

JSON.stringify还有其他方法吗?

+1

那么,至少在这里是其他选项:https://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects – Alex

回答

0

我不得不这样做,并解决“散列”解决方案。 被警告,我没有彻底检查对perf的影响。 我用来检测8个平均子形式的更大形式的变化,没有滞后,但仍然要谨慎。

让我解释一下:

  • 首先,我看着最快,最轻的哈希方法我能找到和加里法院选用murmurhash

  • 然后,当我的数据加载时,我存储了一个原始形式的散列。

  • 接下来,从表单中的每个值更改事件中,我对它进行散列并将结果与​​存储的原始散列进行比较。

  • 和voilà!

我希望它有帮助。

相关问题