Guia do desenvolvedor do AngularJS - Formulários informam que existem muitos estilos e diretrizes sobre formulários e campos. Para cada um, uma classe CSS:
ng-valid
ng-invalid
ng-pristine
ng-dirty
ng-touched
ng-untouched
Qual é a diferença entre pristine/dirty
, e touched/untouched
?
Respostas:
Guia do desenvolvedor do AngularJS - classes CSS usadas pelo AngularJS
fonte
$pristine
/$dirty
informa se o usuário realmente mudou alguma coisa, enquanto$touched
/$untouched
informa se o usuário apenas esteve lá / visitou .Isso é realmente útil para validação. O motivo
$dirty
foi sempre evitar mostrar respostas de validação até o usuário realmente visitar um determinado controle. Mas, usando apenas a$dirty
propriedade, o usuário não obteria feedback de validação a menos que realmente alterasse o valor. Portanto, um$invalid
campo ainda não mostraria ao usuário um prompt se o usuário não alterasse / interagisse com o valor. Se o usuário ignorou completamente um campo obrigatório, tudo parecia correto.Com o Angular 1.3 e
ng-touched
, agora você pode definir um estilo específico em um controle assim que o usuário desfocar, independentemente de editar ou não o valor.Aqui está um CodePen que mostra a diferença de comportamento.
fonte
$setPristine
simplesmente torna o formulário un-$dirty
. Eu acho que você pode quererform.setValidity()
. Veja várias respostas úteis nesta postagem .No livro Pro Angular-6 está detalhado como abaixo;
invalid : Esta propriedade retornará true se o conteúdo do elemento for inválido e false, caso contrário.
pristine : Esta propriedade retorna true se o conteúdo do elemento não tiver sido alterado.
fonte
Vale ressaltar que as propriedades de validação são diferentes para formulários e elementos de formulário (observe que tocado e intocado são apenas para campos):
fonte