Toveisbinding av hendelser i Angular
I Angular kan man også opprette toveis binding av hendelser fra begge komponenter: foreldre- og barnekomponenten. La oss opprette en input i barnekomponentens HTML-mal med toveis binding av brukernavn og en funksjon som endrer navnet:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
La oss gå til barnekomponenten vår og
importere dekoratoren @Input.
Den er nødvendig for å arbeide med inputs:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Deretter binder vi dekoratoren @Input
til brukernavnet. Og dekoratoren @Output
binder vi til objektet userNameChange,
som vil bli kalt i funksjonen onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
La oss nå gå til hovedkomponenten og legge til en navn-egenskap til dens klasse:
export class AppComponent {
name: string = 'alex';
}
Og i HTML-malen til foreldrekomponenten
utfører vi toveis binding av egenskapen
userName med verdien av egenskapen
name i foreldrekomponenten:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Implementer toveis binding av hendelser mellom foreldre- og barnekomponenter i henhold til eksemplet vist i leksjonen.
Basert på forrige oppgave, lag en toveis binding for brukerens alder.