A linguagem Angular utiliza algumas classes para representar comportamentos. A classe que representa um componente que ainda não foi visitado é:
- A)ng-dirty.
Errada, porque ng-dirty indica que o campo foi alterado pelo usuário, não que ele esteja sem visita.
- B)ng-touched.
Errada, porque ng-touched é justamente o estado de um campo que já foi visitado/perdeu o foco.
- C)ng-invalid.
Errada, porque ng-invalid se refere à validação do campo, e não ao fato de ele ter sido visitado.
- D)ng-untouched.
Certa, porque ng-untouched é a classe aplicada ao campo que ainda não foi visitado pelo usuário.
- E)ng-pristine.
Errada, porque ng-pristine indica que o campo ainda não foi modificado, mas isso não é a mesma coisa que não ter sido visitado.
Gabarito: D
No Angular, os estados de formulários e campos costumam aparecer como classes CSS automáticas, o que ajuda você a identificar rapidamente o que já aconteceu com o elemento. Entre essas classes, algumas indicam interação do usuário, como se o campo foi tocado, modificado ou se ainda está no estado inicial. Isso é muito comum em validação de formulários: o Angular vai “carimbando” o campo conforme você mexe nele. A palavra-chave da questão é “ainda não foi visitado”. Em Angular, um campo é considerado “visitado” quando já perdeu o foco pelo menos uma vez. Se isso não aconteceu, ele permanece com a classe ng-untouched. Ou seja, a banca está cobrando a nomenclatura exata do estado do campo, não uma ideia genérica de validação. As outras classes ajudam a completar o raciocínio: ng-pristine indica que o valor ainda não foi alterado, ng-dirty mostra que houve modificação, ng-touched indica que o campo já foi visitado, e ng-invalid mostra que o campo não passou na validação. Então, para um componente que ainda não foi visitado, o nome correto é mesmo ng-untouched. Em resumo: “visitado” no Angular significa “tocado”, e o oposto disso é “untouched”. É uma daquelas questões clássicas de memorização de estado, mas com lógica simples por trás.