Guía del desarrollador de AngularJS: los formularios indican que hay muchos estilos y directivas con respecto a los formularios y campos. Para cada uno, una clase CSS:
ng-valid
ng-invalid
ng-pristine
ng-dirty
ng-touched
ng-untouched
¿Cuál es la diferencia entre pristine/dirtyy touched/untouched?

Respuestas:
AngularJS Developer Guide - Clases CSS utilizadas por AngularJS
fuente
$pristine/$dirtyle dice si el usuario realmente cambió algo, mientras que$touched/$untouchedle dice si el usuario simplemente ha estado allí / visitado .Esto es realmente útil para la validación. El motivo
$dirtysiempre fue evitar mostrar respuestas de validación hasta que el usuario haya visitado un cierto control. Pero, al usar solo la$dirtypropiedad, el usuario no recibiría comentarios de validación a menos que realmente modificaran el valor. Por lo tanto, un$invalidcampo aún no le mostrará al usuario un mensaje si el usuario no cambió / interactuó con el valor. Si el usuario ignoraba por completo un campo obligatorio, todo parecía estar bien.Con Angular 1.3 y
ng-touched, ahora puede establecer un estilo particular en un control tan pronto como el usuario se haya desdibujado, independientemente de si realmente editó el valor o no.Aquí hay un CodePen que muestra la diferencia en el comportamiento.
fuente
$setPristinesimplemente hace que la forma sea un-$dirty. Creo que puedes quererform.setValidity(). Vea varias respuestas útiles en esta publicación .En Pro Angular-6 el libro se detalla a continuación;
inválido : esta propiedad devuelve verdadero si el contenido del elemento es inválido y falso de lo contrario.
prístino : esta propiedad devuelve verdadero si no se ha cambiado el contenido del elemento.
fuente
Vale la pena mencionar que las propiedades de validación son diferentes para formularios y elementos de formulario (tenga en cuenta que tocado y no tocado son solo para campos):
fuente