Binding bidirezionale degli eventi in Angular
In Angular è anche possibile creare un binding bidirezionale degli eventi di entrambi i componenti: genitore e figlio. Creiamo nel template HTML figlio un input con un binding bidirezionale del nome utente e una funzione che cambia il nome:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Passiamo al nostro componente figlio e
importiamo in esso il decoratore @Input.
È necessario per lavorare con gli input:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Successivamente, colleghiamo il decoratore @Input
al nome utente. E il decoratore @Output
lo colleghiamo all'oggetto userNameChange,
che verrà chiamato nella funzione onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Ora passiamo al componente principale e aggiungiamo alla sua classe la proprietà nome:
export class AppComponent {
name: string = 'alex';
}
E nel template HTML del componente genitore
eseguiamo il binding bidirezionale della proprietà
userName con il valore della proprietà
name del componente genitore:
<user-data [(userName)]="name"></user-data>
<p>Hai scelto il nome: {{ name }}</p>
Implementa il binding bidirezionale degli eventi dei componenti genitore e figlio secondo l'esempio fornito nella lezione.
Basandoti sul compito precedente, crea un binding bidirezionale per l'età dell'utente.