How to reset $dirty in form


I am facing one issue while using $dirty in my application form.

The issue is once you change the form field,value of $dirty will get set to true
but now when you undo your changes it’s not resetting $dirty value to false.

We can reset the $dirty value to false manually but afterwards when you again change your form field values $dirty won’t change its value to true. According to my observation it set $dirty value of every field in your form by placing ng-dirty class. Even if you remove that class it is not affecting $dirty behavior.

// Please find below attached Fiddle for code reference



What you are looking for is $setPristine(). You’ll find it in the docs here:

When a form first loads on the page it is in a state called pristine. You’ll find that form.$pristine is true and form.$dirty is false. Once any changes have been made to any element that has an Angular binding, those values are reversed. While you can reset the form input values to their original state, doing so does not change either Angular form state. Making a call to form.$setPristine(); sets those form values back to their original state.

Answered By – MBielski

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published