Αμφίδρομη σύνδεση γεγονότων στο Angular

Επίσης στο Angular μπορούμε να κάνουμε αμφίδρομη σύνδεση γεγονότων και των δύο στοιχείων: γονικού και θυγατρικού. Ας φτιάξουμε στο θυγατρικό HTML πρότυπο ένα πεδίο εισαγωγής με αμφίδρομη σύνδεση του ονόματος χρήστη και μια συνάρτηση που αλλάζει το όνομα:

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

Ας πάμε στο θυγατρικό μας στοιχείο και να εισάγουμε σε αυτό τον decorator @Input. Χρειάζεται για να δουλέψει με inputs :

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

Στη συνέχεια δένουμε τον decorator @Input στο όνομα χρήστη. Και τον decorator @Output τον δένουμε στο αντικείμενο userNameChange, που θα καλείται στη συνάρτηση 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);
  }
}

Τώρα πάμε στο κύριο στοιχείο και προσθέτουμε στην κλάση του την ιδιότητα όνομα:

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

Και στο HTML πρότυπο του γονικού στοιχείου κάνουμε αμφίδρομη σύνδεση της ιδιότητας userName με την τιμή της ιδιότητας name του γονικού στοιχείου:

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

Υλοποιήστε αμφίδρομη σύνδεση γεγονότων γονικού και θυγατρικού στοιχείου σύμφωνα με το παράδειγμα που δόθηκε στο μάθημα.

Задание 2

Με βάση την προηγούμενη άσκηση κάντε αμφίδρομη σύνδεση της ηλικίας του χρήστη.