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:

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

Liigume oma lapskomponendi juurde ja impordime sinna dekoraatori @Input. See on vajalik sisendite töötlemiseks:

app/user/user.component.tsimport { 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:

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);
  }
}

Nüüd liigume põhikomponendi juurde ja lisame selle klassi omaduseks nime:

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

Ja vanemkomponendi HTML-mallis teostame kahesuunalise sidumise omadusest userName vanemkomponendi omaduse name väärtusega:

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

Realiseerige kahesuunaline sündmuste sidumine vanem- ja lapskomponendite vahel vastavalt õppetükis toodud näitele.

Задание 2

Eelmise ülesande põhjal tehke kahesuunaline sidumine kasutaja vanusele.