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:

app/user/user.component.html<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:

app/user/user.component.tsimport { 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:

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);
  }
}

Jetzt wechseln wir zur Hauptkomponente und fügen ihrer Klasse eine Name-Eigenschaft hinzu:

app/app.component.tsexport 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:

ap.component.html<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Задание 1

Implementieren Sie die bidirektionale Ereignisbindung der übergeordneten und untergeordneten Komponenten gemäß dem im Lesson angeführten Beispiel.

Задание 2

Erstellen Sie basierend auf der vorherigen Aufgabe eine bidirektionale Bindung des Benutzeralters.