Angular - 5.11-Utilisation de références locales dans les modèles
Reprenons notre cockpit. Jusqu'ici, nous utilisons une liaison à double sens
[(ngModel)] pour récupérer en continu le nom et le contenu du serveur
saisis dans les champs <input>. Rien d'incorrect dans cette
approche, mais comme nous n'utilisons ces valeurs qu'au moment précis où
l'utilisateur clique sur « Ajouter le serveur », il est plus économique d'aller
simplement chercher les valeurs à ce moment-là. Angular offre une fonctionnalité
élégante pour ça : les références locales.
Comment créer et utiliser une référence locale
On place une référence locale sur n'importe quel élément HTML d'un template — pas
forcément un <input>. La syntaxe : un dièse # suivi du
nom de notre choix. Cette référence pointe vers l'élément complet
(avec toutes ses propriétés DOM), pas seulement vers sa valeur :
<input type="text" class="form-control" #serverNameInput>
<button class="btn btn-primary" (click)="onAddServer(serverNameInput)">
Ajouter le serveur
</button>
- une référence locale est utilisable uniquement dans le template (jamais dans le code TypeScript) ;
- on peut la passer comme argument à un gestionnaire d'événement, comme ici
onAddServer(serverNameInput); - côté TypeScript, le paramètre reçu est l'élément DOM complet — on accède alors à la valeur via
serverNameInput.value; - une fois la référence en place, on peut supprimer le two-way binding
[(ngModel)]qui devient inutile.
Les références locales sont une fonctionnalité très pratique pour atteindre un élément précis du template et le transmettre à une méthode quand il faut juste lire sa valeur ponctuellement — sans la lourdeur d'une liaison à double sens permanente.