Enlace bidireccional de eventos en Angular
También en Angular se puede hacer un enlace bidireccional de eventos de ambos componentes: padre e hijo. Hagamos en la plantilla HTML hija una entrada con enlace bidireccional del nombre de usuario y una función que cambie el nombre:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Vayamos a nuestro componente hijo e
importemos en él el decorador @Input.
Es necesario para trabajar con entradas:
import { Component, Input, Output, EventEmitter } from '@angular/core';
A continuación enlazamos el decorador @Input
al nombre de usuario. Y el decorador @Output
lo enlazamos al objeto userNameChange,
que se llamará en la función onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Ahora vayamos al componente principal y añadamos a su clase la propiedad nombre:
export class AppComponent {
name: string = 'alex';
}
Y en la plantilla HTML del componente padre
realizamos el enlace bidireccional de la propiedad
userName con el valor de la propiedad
name del componente padre:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Implemente el enlace bidireccional de eventos de componentes padre e hijo según el ejemplo proporcionado en la lección.
Basándose en la tarea anterior, haga el enlace bidireccional de la edad del usuario.