Le variabili di riferimento del modello sono un piccolo gioiello che consente di fare molte cose carine con Angular. Di solito chiamo quella caratteristica "sintassi hashtag" perché, beh, si basa su un semplice hashtag per creare un riferimento a un elemento in un modello:
<input #phone placeholder="phone number">
Quello che fa la sintassi sopra è abbastanza semplice: crea un riferimento all'elemento di input che può essere usato in seguito nel mio modello. Si noti che l'ambito di questa variabile è l'intero modello HTML in cui è definito il riferimento.
Ecco come ho potuto utilizzare quel riferimento per ottenere il valore dell'input, ad esempio:
<!-- phone refers to the input element -->
<button (click)="callPhone(phone.value)">Call</button>
Si noti che il telefono si riferisce all'istanza dell'oggetto HTMLElement per l' input . Di conseguenza, il telefono ha tutte le proprietà e i metodi di qualsiasi HTMLElement (id, nome, innerHTML, valore, ecc.)
Quanto sopra è un buon modo per evitare di usare ngModel o qualche altro tipo di associazione dei dati in una forma semplice che non richiede molto in termini di convalida.
Funziona anche con i componenti?
La risposta è si!
... la parte migliore è che stiamo ottenendo un riferimento all'istanza del componente reale, HelloWorldComponent, in modo da poter accedere a qualsiasi metodo o proprietà di quel componente (anche se sono dichiarati come privati o protetti, il che è sorprendente) :
@Component({
selector: 'app-hello',
// ...
export class HelloComponent {
name = 'Angular';
}
[...]
<app-hello #helloComp></app-hello>
<!-- The following expression displays "Angular" -->
{{helloComp.name}}
#searchBox
sull'elemento è ciò che ti permette di usaresearchBox.value
nel gestore keyup.