Двосмерно поврзување на настани во Angular

Исто така во Angular може да се направи двосмерно поврзување на настани на двата компоненти: родителскиот и детскиот. Ајде да направиме во детскиот HTML-шаблон input со двосмерно поврзување на корисничкото име и функција, која го менува името:

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

Да преминеме во нашиот детски компонент и да го импортираме во него декораторот @Input. Потребен е за работа со inputs :

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

Врз основа на претходната задача направете двосмерно поврзување на возраста на корисникот.