Dwukierunkowe wiązanie zdarzeń w Angular

W Angular można również utworzyć dwukierunkowe wiązanie zdarzeń obu komponentów: nadrzędnego i podrzędnego. Stwórzmy w szablonie HTML komponentu podrzędnego pole input z dwukierunkowym wiązaniem nazwy użytkownika i funkcji, zmieniającej nazwę:

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

Przejdźmy do naszego komponentu podrzędnego i zaimportujmy do niego dekorator @Input. Jest on potrzebny do pracy z inputami:

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

Następnie powiążmy dekorator @Input z nazwą użytkownika. A dekorator @Output powiążmy z obiektem userNameChange, który będzie wywoływany w funkcji 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);
  }
}

Teraz przejdźmy do głównego komponentu i dodajmy do jego klasy właściwość nazwa:

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

A w szablonie HTML komponentu nadrzędnego wykonajmy dwukierunkowe wiązanie właściwości userName z wartością właściwości name komponentu nadrzędnego:

ap.component.html<user-data [(userName)]="name"></user-data>
<p>Wybrałeś nazwę: {{ name }}</p>
Задание 1

Zaimplementuj dwukierunkowe wiązanie zdarzeń komponentu nadrzędnego i podrzędnego zgodnie z przykładem podanym w lekcji.

Задание 2

Na podstawie poprzedniego zadania wykonaj dwukierunkowe wiązanie wieku użytkownika.