Αμφίδρομη σύνδεση γεγονότων στο Angular
Επίσης στο Angular μπορούμε να κάνουμε αμφίδρομη σύνδεση γεγονότων και των δύο στοιχείων: γονικού και θυγατρικού. Ας φτιάξουμε στο θυγατρικό HTML πρότυπο ένα πεδίο εισαγωγής με αμφίδρομη σύνδεση του ονόματος χρήστη και μια συνάρτηση που αλλάζει το όνομα:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Ας πάμε στο θυγατρικό μας στοιχείο και
να εισάγουμε σε αυτό τον decorator @Input.
Χρειάζεται για να δουλέψει με inputs :
import { Component, Input, Output, EventEmitter } from '@angular/core';
Στη συνέχεια δένουμε τον decorator @Input
στο όνομα χρήστη. Και τον decorator @Output
τον δένουμε στο αντικείμενο userNameChange,
που θα καλείται στη συνάρτηση onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Τώρα πάμε στο κύριο στοιχείο και προσθέτουμε στην κλάση του την ιδιότητα όνομα:
export class AppComponent {
name: string = 'alex';
}
Και στο HTML πρότυπο του γονικού στοιχείου
κάνουμε αμφίδρομη σύνδεση της ιδιότητας
userName με την τιμή της ιδιότητας
name του γονικού στοιχείου:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Υλοποιήστε αμφίδρομη σύνδεση γεγονότων γονικού και θυγατρικού στοιχείου σύμφωνα με το παράδειγμα που δόθηκε στο μάθημα.
Με βάση την προηγούμενη άσκηση κάντε αμφίδρομη σύνδεση της ηλικίας του χρήστη.