Obousměrná vazba událostí v Angular

V Angular lze také vytvořit obousměrnou vazbu událostí obou komponent: rodičovské a dceřiné. Pojďme vytvořit v dceřiném HTML šabloně vstup s obousměrnou vazbou jména uživatele a funkce, která mění jméno:

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

Přejděme do naší dceřiné komponenty a importujme do ní dekorátor @Input. Je potřebný pro práci s inputy :

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

Dále navážeme dekorátor @Input na jméno uživatele. A dekorátor @Output navážeme na objekt userNameChange, který bude volán ve funkci 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);
  }
}

Nyní přejděme do hlavní komponenty a přidejme k její třídě vlastnost jméno:

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

A v HTML šabloně rodičovské komponenty proveďme obousměrnou vazbu vlastnosti userName s hodnotou vlastnosti name rodičovské komponenty:

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

Realizujte obousměrnou vazbu událostí rodičovské a dceřiné komponenty podle uvedeného příkladu v lekci.

Задание 2

Na základě předchozího úkolu vytvořte obousměrnou vazbu věku uživatele.