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ę:
<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:
import { 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:
export 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:
export 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:
<user-data [(userName)]="name"></user-data>
<p>Wybrałeś nazwę: {{ name }}</p>
Zaimplementuj dwukierunkowe wiązanie zdarzeń komponentu nadrzędnego i podrzędnego zgodnie z przykładem podanym w lekcji.
Na podstawie poprzedniego zadania wykonaj dwukierunkowe wiązanie wieku użytkownika.