Dvosmerno vezivanje događaja u Angularu
Takođe u Angularu je moguće napraviti dvosmerno vezivanje događaja obe komponente: roditeljske i detinje. Hajde da napravimo u detinjem HTML šablonu input polje sa dvosmernim vezivanjem korisničkog imena i funkcije koja menja ime:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Pređimo u našu detinju komponentu i
uvežimo u nju dekorator @Input.
Potreban je za rad sa input poljima:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Zatim vežemo dekorator @Input
za korisničko ime. A dekorator @Output
vežemo za objekat userNameChange,
koji će biti pozvan u funkciji onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Sada pređimo u glavnu komponentu i dodajmo njenoj klasi svojstvo ime:
export class AppComponent {
name: string = 'alex';
}
A u HTML šablonu roditeljske komponente
izvršimo dvosmerno vezivanje svojstva
userName sa vrednošću svojstva
name roditeljske komponente:
<user-data [(userName)]="name"></user-data>
<p>Izabrali ste ime: {{ name }}</p>
Implementirajte dvosmerno vezivanje događaja roditeljske i detinje komponente prema primeru datom u lekciji.
Na osnovu prethodnog zadatka napravite dvosmerno vezivanje korisnikovog uzrasta.