Kahesuunaline sündmuste sidumine Angularis
Angularis on võimalik teha ka kahesuunalist sündmuste sidumist mõlemas komponendis: vanem- ja lapskomponendis. Teeme lapskomponendi HTML-i mallis sisendvälja kahesuunalise nime sidumise ja funktsiooniga, mis muudab nime:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Liigume oma lapskomponendi juurde ja
impordime sinna dekoraatori @Input.
See on vajalik sisendite töötlemiseks:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Järgneks seome dekoraatori @Input
kasutajanime külge. Ja dekoraatori @Output
seome objektile userNameChange,
mida kutsutakse välja funktsioonis onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Nüüd liigume põhikomponendi juurde ja lisame selle klassi omaduseks nime:
export class AppComponent {
name: string = 'alex';
}
Ja vanemkomponendi HTML-mallis
teostame kahesuunalise sidumise omadusest
userName vanemkomponendi omaduse
name väärtusega:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Realiseerige kahesuunaline sündmuste sidumine vanem- ja lapskomponendite vahel vastavalt õppetükis toodud näitele.
Eelmise ülesande põhjal tehke kahesuunaline sidumine kasutaja vanusele.