Двусторонняя привязка событий в Angular

Также в Angular можно сделать двустороннюю привязку событий обоих компонентов: родительского и дочернего. Давайте сделаем в дочернем HTML-шаблоне инпут с двусторонней привязкой имени пользователя и функции, меняющей имя:

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

Перейдем в наш дочерний компонент и импортируем в него декоратор @Input. Он нужен для работы с инпутами :

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

Далее привязываем декоратор @Input к имени пользователя. А декоратор @Output привязываем к объекту userNameChange, который будет вызываться в функции 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);
  }
}

Теперь переходим в главный компонент и добавляем к его классу свойство имя:

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

А в HTML-шаблоне родительского компонента выполняем двустороннюю привязку свойства userName со значением свойства name родительского компонента:

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

Реализуйте двустороннюю привязку событий родительского и дочернего компонентов согласно приведенному в уроке примеру.

Задание 2

На основе предыдущей задачи сделайте двустороннюю привязку возраста пользователя.