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:

app/user/user.component.html<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:

app/user/user.component.tsimport { 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:

app/user/user.component.tsexport 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:

app/app.component.tsexport 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:

ap.component.html<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Задание 1

Realizați legătura bidirecțională a evenimentelor componentei părinte și copil conform exemplului dat în lecție.

Задание 2

Pe baza sarcinii precedente faceți legătura bidirecțională a vârstei utilizatorului.