Divpusējā notikumu piesaiste Angular

Angular ir iespējams izveidot arī divpusēju notikumu piesaisti abiem komponentiem: vecāka un bērna. Izveidosim bērna HTML veidnē ievades lauku ar divpusēju lietotājvārda piesaisti un funkciju, kas maina vārdu:

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

Pāriesim uz mūsu bērna komponentu un importēsim tajā dekoratoru @Input. Tas ir nepieciešams darbam ar ievadiem:

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

Tālāk piesaistām dekoratoru @Input lietotājvārdam. Un dekoratoru @Output piesaistām objektam userNameChange, kas tiks izsaukts funkcijā 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);
  }
}

Tagad pārejam uz galveno komponentu un pievienojam tā klasei īpašību vārds:

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

Un vecāka komponenta HTML veidnē veicam divpusēju īpašības userName piesaisti ar vecāka komponenta īpašības name vērtību:

ap.component.html<user-data [(userName)]="name"></user-data>
<p>Jūs izvēlējāties vārdu: {{ name }}</p>
Задание 1

Implementējiet divpusēju notikumu piesaisti vecāka un bērna komponentiem saskaņā ar nodarbībā doto piemēru.

Задание 2

Balstoties uz iepriekšējo uzdevumu, izveidojiet divpusēju lietotāja vecuma piesaisti.