Transmitindo dados para o componente pai no Angular
É possível transmitir dados de um componente
filho para um componente pai. Isso é feito
emitindo eventos usando um objeto especial
EventEmitter
e o método emit. O componente filho
emitirá eventos, passando alguns dados junto
com o evento, e o componente pai
irá capturar os eventos, obtendo
os dados do componente filho.
Vamos tentar na prática. Para isso,
precisamos realizar uma série de etapas. Primeiro,
em nosso componente filho, importamos
o decorador @Output e a classe
EventEmitter:
import { Component, Output, EventEmitter } from '@angular/core';
Agora, na classe filha, vamos criar uma propriedade
onData, cujo valor será
um novo objeto EventEmitter, contendo
uma string:
export class UserComponent {
@Output()
public onData = new EventEmitter<string>();
}
Agora, vamos criar um método send, cuja chamada
irá emitir o evento onData
para o componente pai com o texto especificado:
export class UserComponent {
@Output()
public onData = new EventEmitter<string>();
send() {
this.onData.emit('xxx');
}
}
No template do componente filho, vamos criar
um botão, cujo clique irá chamar o
método send:
<button (click)="send()">
enviar dados
</button>
No componente pai, vamos criar um método
onData, que será automaticamente
chamado quando o evento correspondente for
emitido pelo componente filho. Os dados
transmitidos serão passados para o parâmetro do método:
export class AppComponent {
public onData(data: string) {
console.log(data);
}
}
No template do componente pai, vamos vincular ao tag do componente filho o evento:
<app-user (onData)="onData($event)"></app-user>
No componente filho, crie três botões, que emitem eventos diferentes. Capture os eventos emitidos no componente pai.