Legătura bidirecțională a evenimentelor în Angular
De asemenea, în Angular se poate face legătura bidirecțională a evenimentelor ambelor componente: părinte și copil. Să facem în șablonul HTML copil un input cu legătura bidirecțională a numelui de utilizator și a funcției care schimbă numele:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Să trecem în componenta noastră copil și
să importăm în ea decoratorul @Input.
El este necesar pentru lucrul cu input-uri:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Apoi legăm decoratorul @Input
la numele de utilizator. Iar decoratorul @Output
îl legăm la obiectul userNameChange,
care va fi apelat în funcția onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Acum să trecem în componenta principală și să adăugăm clasei sale proprietatea nume:
export class AppComponent {
name: string = 'alex';
}
Iar în șablonul HTML al componentei părinte
executăm legătura bidirecțională a proprietății
userName cu valoarea proprietății
name a componentei părinte:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Realizați legătura bidirecțională a evenimentelor componentei părinte și copil conform exemplului dat în lecție.
Pe baza sarcinii precedente faceți legătura bidirecțională a vârstei utilizatorului.