Tvåvägsbindning av händelser i Angular
I Angular kan man också skapa tvåvägsbindning av händelser för båda komponenterna: förälder och barn. Låt oss skapa en input i barnets HTML-mall med tvåvägsbindning av användarnamnet och en funktion som ändrar namnet:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Låt oss gå till vår barnkomponent och
importera dekoratören @Input.
Den behövs för att arbeta med inputs :
import { Component, Input, Output, EventEmitter } from '@angular/core';
Sedan binder vi dekoratören @Input
till användarnamnet. Och dekoratören @Output
binder vi till objektet userNameChange,
som kommer att anropas i funktionen onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Nu går vi till huvudkomponenten och lägger till egenskapen namn till dess klass:
export class AppComponent {
name: string = 'alex';
}
Och i HTML-mallen för förälderkomponenten
utför vi tvåvägsbindning av egenskapen
userName med värdet av egenskapen
name i förälderkomponenten:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Implementera tvåvägsbindning av händelser för förälder- och barnkomponenter enligt exemplet i lektionen.
Baserat på den föregående uppgiften, skapa tvåvägsbindning av användarens ålder.