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/dirty
y touched/untouched
?
Respuestas:
AngularJS Developer Guide - Clases CSS utilizadas por AngularJS
fuente
$pristine
/$dirty
le dice si el usuario realmente cambió algo, mientras que$touched
/$untouched
le dice si el usuario simplemente ha estado allí / visitado .Esto es realmente útil para la validación. El motivo
$dirty
siempre fue evitar mostrar respuestas de validación hasta que el usuario haya visitado un cierto control. Pero, al usar solo la$dirty
propiedad, el usuario no recibiría comentarios de validación a menos que realmente modificaran el valor. Por lo tanto, un$invalid
campo 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
$setPristine
simplemente 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