Enlace bidireccional de eventos en Angular

También en Angular se puede hacer un enlace bidireccional de eventos de ambos componentes: padre e hijo. Hagamos en la plantilla HTML hija una entrada con enlace bidireccional del nombre de usuario y una función que cambie el nombre:

app/user/user.component.html<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />

Vayamos a nuestro componente hijo e importemos en él el decorador @Input. Es necesario para trabajar con entradas:

app/user/user.component.tsimport { Component, Input, Output, EventEmitter } from '@angular/core';

A continuación enlazamos el decorador @Input al nombre de usuario. Y el decorador @Output lo enlazamos al objeto userNameChange, que se llamará en la función 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);
  }
}

Ahora vayamos al componente principal y añadamos a su clase la propiedad nombre:

app/app.component.tsexport class AppComponent {
  name: string = 'alex';
}

Y en la plantilla HTML del componente padre realizamos el enlace bidireccional de la propiedad userName con el valor de la propiedad name del componente padre:

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

Implemente el enlace bidireccional de eventos de componentes padre e hijo según el ejemplo proporcionado en la lección.

Задание 2

Basándose en la tarea anterior, haga el enlace bidireccional de la edad del usuario.