Dvosmerno povezovanje dogodkov v Angular

V Angularju je mogoče tudi vzpostaviti dvosmerno povezovanje dogodkov obeh komponent: starševske in podrejene. Naredimo v podrejenem HTML predlogu vnosno polje z dvosmerno povezavo uporabniškega imena in funkcijo, ki spreminja ime:

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

Pojdimo v naš podrejeni komponent in vanj uvozimo dekorator @Input. Potreben je za delo z vnosi:

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

Nato povežemo dekorator @Input z uporabniškim imenom. Dekorator @Output pa povežemo z objektom userNameChange, ki se bo klical v funkciji 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);
  }
}

Zdaj pojdimo v glavni komponent in dodajmo njegovemu razredu lastnost ime:

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

V HTML predlogu starševskega komponenta pa izvedemo dvosmerno povezavo lastnosti userName z vrednostjo lastnosti name starševskega komponenta:

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

Implementirajte dvosmerno povezovanje dogodkov starševskega in podrejenega komponenta v skladu s primerom iz lekcije.

Задание 2

Na podlagi prejšnje naloge naredite dvosmerno povezavo starosti uporabnika.