Vinculação Bidirecional de Eventos no Angular

No Angular, também é possível fazer uma vinculação bidirecional de eventos de ambos os componentes: pai e filho. Vamos criar no modelo HTML filho uma entrada com vinculação bidirecional do nome de usuário e uma função que altera o nome:

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

Vamos para o nosso componente filho e importar o decorador @Input. Ele é necessário para trabalhar com inputs:

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

Em seguida, vinculamos o decorador @Input ao nome de usuário. E o decorador @Output é vinculado ao objeto userNameChange, que será chamado na função 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);
  }
}

Agora vamos para o componente principal e adicionamos a propriedade nome à sua classe:

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

E no modelo HTML do componente pai realizamos a vinculação bidirecional da propriedade userName com o valor da propriedade name do componente pai:

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

Implemente a vinculação bidirecional de eventos dos componentes pai e filho de acordo com o exemplo apresentado na lição.

Задание 2

Com base na tarefa anterior, faça a vinculação bidirecional da idade do usuário.