Vinculação Bidirecional de Eventos no Angular
No Angular, também é possível fazer uma vinculação bidirecional de eventos de ambos os componentes: pai e filho. Vamos criar no modelo HTML filho uma entrada com vinculação bidirecional do nome de usuário e uma função que altera o nome:
<input [ngModel]="userName" (ngModelChange)="onNameChange($event)" />
Vamos para o nosso componente filho e
importar o decorador @Input.
Ele é necessário para trabalhar com inputs:
import { Component, Input, Output, EventEmitter } from '@angular/core';
Em seguida, vinculamos o decorador @Input
ao nome de usuário. E o decorador @Output
é vinculado ao objeto userNameChange,
que será chamado na função onNameChange:
export class UserComponent {
@Input() userName: string = '';
@Output() userNameChange = new EventEmitter<string>();
onNameChange(model: string) {
this.userName = model;
this.userNameChange.emit(model);
}
}
Agora vamos para o componente principal e adicionamos a propriedade nome à sua classe:
export class AppComponent {
name: string = 'alex';
}
E no modelo HTML do componente pai
realizamos a vinculação bidirecional da propriedade
userName com o valor da propriedade
name do componente pai:
<user-data [(userName)]="name"></user-data>
<p>You choose name: {{ name }}</p>
Implemente a vinculação bidirecional de eventos dos componentes pai e filho de acordo com o exemplo apresentado na lição.
Com base na tarefa anterior, faça a vinculação bidirecional da idade do usuário.