Angular: Как узнать, вернулась ли форма в исходное состояние?

У меня есть реактивная форма, которая имеет некоторые значения по умолчанию и хочу отключить кнопку сохранения, пока пользователь не изменил что-либо и если пользователь вернул ее в исходное состояние.

Я могу подписаться на valuechanges, но я хочу знать, вернулась ли форма в исходное состояние после некоторых изменений (пользователь отменил изменения) и отключить кнопку сохранения.

Я не могу использовать Form.dirty как это становится грязным, как только пользователь изменил что-то, а не pristine еще раз, если пользователь отменил свои изменения.

Любой другой способ, чем JSON.stringify сравнить?

1 ответ

Я должен был сделать это и согласиться на "хэш" решение. Имейте в виду, я не проверил тщательно влияние на производительность. Я имел обыкновение обнаруживать изменения в 8 средних субформах больших форм без задержки, но все же, будь осторожен.

Позволь мне объяснить:

  • Во-первых, я искал самый быстрый и легкий способ хэширования, который только мог найти, и выбрал бормотушу от Гэри Корта.

  • Затем, когда мои данные загружены, я сохраняю хэш моей первоначальной формы.

  • Затем, при каждом событии изменения значения из формы, я хэширую его и сравниваю результат с сохраненным первоначальным хешем.

  • И вуаля!

Я надеюсь, что это помогает.

Другие вопросы по тегам