Les variables de référence de modèle sont un petit bijou qui permet de faire beaucoup de belles choses avec Angular. J'appelle généralement cette fonctionnalité «la syntaxe du hashtag» car, eh bien, elle repose sur un simple hashtag pour créer une référence à un élément dans un modèle:
<input #phone placeholder="phone number">
Ce que fait la syntaxe ci-dessus est assez simple: elle crée une référence à l' élément d' entrée qui peut être utilisée plus tard dans mon modèle. Notez que la portée de cette variable est l'ensemble du modèle HTML dans lequel la référence est définie.
Voici comment je pourrais utiliser cette référence pour obtenir la valeur de l'entrée, par exemple:
<!-- phone refers to the input element -->
<button (click)="callPhone(phone.value)">Call</button>
Notez que phone fait référence à l' instance d' objet HTMLElement pour l' entrée . En conséquence, le téléphone possède toutes les propriétés et méthodes de tout HTMLElement (id, nom, innerHTML, valeur, etc.)
Ce qui précède est un bon moyen d'éviter d'utiliser ngModel ou un autre type de liaison de données sous une forme simple qui ne nécessite pas beaucoup en termes de validation.
Cela fonctionne-t-il également avec les composants?
La réponse est oui!
... la meilleure partie de cela est que nous obtenons une référence à l'instance de composant réelle, HelloWorldComponent, afin que nous puissions accéder à toutes les méthodes ou propriétés de ce composant (même si elles sont déclarées comme privées ou protégées, ce qui est surprenant) :
@Component({
selector: 'app-hello',
// ...
export class HelloComponent {
name = 'Angular';
}
[...]
<app-hello #helloComp></app-hello>
<!-- The following expression displays "Angular" -->
{{helloComp.name}}
#searchBox
sur l'élément est ce qui vous permet d'utilisersearchBox.value
dans le gestionnaire de keyup.