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:
<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 :
import { 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:
export 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:
export 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:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Realizujte obousměrnou vazbu událostí rodičovské a dceřiné komponenty podle uvedeného příkladu v lekci.
Na základě předchozího úkolu vytvořte obousměrnou vazbu věku uživatele.