Dvojstupňové viazanie udalostí v Angular

V Angular je tiež možné vytvoriť dvojstupňové viazanie udalostí oboch komponentov: rodičovského a dcérskeho. Vytvorme v dcérskom HTML šablóne vstup s dvojstupňovým viazaním mena používateľa a funkcie, ktorá mení meno:

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

Prejdime do nášho dcérskeho komponentu a importujme do neho dekorátor @Input. Je potrebný pre prácu so vstupmi:

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

Ďalej viažeme dekorátor @Input k menu používateľa. A dekorátor @Output viažeme k objektu userNameChange, ktorý sa bude volať vo funkcii 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);
  }
}

Teraz prejdime do hlavného komponentu a pridajme k jeho triede vlastné meno:

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

A v HTML šablóne rodičovského komponentu vykonajme dvojstupňové viazanie vlastnosti userName s hodnotou vlastnosti name rodičovského komponentu:

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

Realizujte dvojstupňové viazanie udalostí rodičovského a dcérskeho komponentov podľa uvedeného príkladu v lekcii.

Задание 2

Na základe predchádzajúcej úlohy vytvorte dvojstupňové viazanie veku používateľa.