Angular: Как узнать, вернулась ли форма в исходное состояние?
У меня есть реактивная форма, которая имеет некоторые значения по умолчанию и хочу отключить кнопку сохранения, пока пользователь не изменил что-либо и если пользователь вернул ее в исходное состояние.
Я могу подписаться на valuechanges
, но я хочу знать, вернулась ли форма в исходное состояние после некоторых изменений (пользователь отменил изменения) и отключить кнопку сохранения.
Я не могу использовать Form.dirty
как это становится грязным, как только пользователь изменил что-то, а не pristine
еще раз, если пользователь отменил свои изменения.
Любой другой способ, чем JSON.stringify
сравнить?
1 ответ
Я должен был сделать это и согласиться на "хэш" решение. Имейте в виду, я не проверил тщательно влияние на производительность. Я имел обыкновение обнаруживать изменения в 8 средних субформах больших форм без задержки, но все же, будь осторожен.
Позволь мне объяснить:
Во-первых, я искал самый быстрый и легкий способ хэширования, который только мог найти, и выбрал бормотушу от Гэри Корта.
Затем, когда мои данные загружены, я сохраняю хэш моей первоначальной формы.
Затем, при каждом событии изменения значения из формы, я хэширую его и сравниваю результат с сохраненным первоначальным хешем.
И вуаля!
Я надеюсь, что это помогает.