name est obligatoire sur chaque champ lié par
ngModel : sans lui, Angular lève une erreur.
#nom="ngModel" crée une référence permettant de consulter l'état du champ.
touched évite d'afficher une erreur avant même que l'utilisateur ait saisi quoi que
ce soit. C'est un détail d'ergonomie qui change beaucoup le ressenti.
3. Les états d'un champ
État
Signification
valid / invalid
Respecte ou non les règles
touched / untouched
Le champ a été visité
dirty / pristine
La valeur a été modifiée
La combinaison utile pour afficher une erreur : invalid && touched.
Toute la structure est décrite dans la classe : c'est plus verbeux, mais bien plus maniable dès
que le formulaire se complique.
6. Un rappel de sécurité
La validation côté navigateur améliore le confort, elle ne protège rien. Elle se
contourne en quelques secondes. Toute donnée reçue doit être revérifiée côté serveur : c'est une
règle sans exception.
Et maintenant ?
Vous disposez des fondations : composants, liaison de données, directives, services, routage et
formulaires. Pour poursuivre : les formulaires réactifs en profondeur, RxJS et les Observables,
les guards de routes, les tests unitaires, puis le déploiement.
Le meilleur conseil pour la suite : construisez un vrai projet, même modeste. Une gestion
d'étudiants, un carnet d'adresses, une liste de tâches. C'est en butant sur des problèmes concrets que
les notions s'ancrent.
À retenir
Template-driven pour le simple, réactif pour le complexe
name est obligatoire avec ngModel
Afficher les erreurs sur invalid && touched
La validation du navigateur ne remplace jamais celle du serveur
Exercices d'application
Exercice 1. Formulaire d'inscriptionCréez un formulaire nom, e-mail, âge et filière, avec validation et messages d'erreur. Le bouton reste désactivé tant que tout n'est pas valide.
Exercice 2. Soigner les messagesAffichez un message différent selon l'erreur : champ vide, trop court, format invalide. N'affichez rien tant que le champ n'a pas été visité.
Exercice 3. Passer au réactifRéécrivez le même formulaire avec FormBuilder et Validators. Comparez les deux versions et dites laquelle vous semble la plus claire.
Faites-les dans un vrai projet : c'est en pratiquant que l'on retient.