Bidirektionale Ereignisbindung in Angular
In Angular kann auch eine bidirektionale Bindung von Ereignissen beider Komponenten erstellt werden: der übergeordneten und der untergeordneten. Lassen Sie uns in der untergeordneten HTML-Vorlage eine Eingabe mit bidirektionaler Bindung des Benutzernamens und einer Funktion erstellen, die den Namen ändert:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Wechseln wir zu unserer untergeordneten Komponente und
importieren den Dekorator @Input.
Er wird für die Arbeit mit Inputs benötigt:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Als nächstes binden wir den Dekorator @Input
an den Benutzernamen. Und den Dekorator @Output
binden wir an das Objekt userNameChange,
das in der Funktion onNameChange aufgerufen wird:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Jetzt wechseln wir zur Hauptkomponente und fügen ihrer Klasse eine Name-Eigenschaft hinzu:
export class AppComponent {
name: string = 'alex';
}
Und in der HTML-Vorlage der übergeordneten Komponente
führen wir eine bidirektionale Bindung der Eigenschaft
userName mit dem Wert der Eigenschaft
name der übergeordneten Komponente durch:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Implementieren Sie die bidirektionale Ereignisbindung der übergeordneten und untergeordneten Komponenten gemäß dem im Lesson angeführten Beispiel.
Erstellen Sie basierend auf der vorherigen Aufgabe eine bidirektionale Bindung des Benutzeralters.