Hola a todos, hoy os voy a explicar como funcionan los outputs en Angular2+.
Ya vimos el tema de los inputs, os dejo el manual por aquí:
Los outputs en angular sirven para comunicar el componente hijo con el componente padre, haciendo que lance un evento que el padre puede recoger.
Retomemos el ejemplo de los Inputs y vamos a agregarle la comunicación con el padre.
Lo que haremos sera modificar el child.component.
Vamos a añadirle lo siguiente:
[typescript]@Output() returnMessage: EventEmitter<string>;
[/typescript]En el constructor, lo debemos crear:
[typescript] constructor() {
this.returnMessage = new EventEmitter<string>();
}
En el HTML, vamos a crear un botón para añadir un evento que al pulsar emitamos un mensaje al padre:
[typescript] [/typescript]En el ts, creamos la función:
[typescript] llamarPadre($event){
this.returnMessage.emit(«Mensaje desde el hijo al padre del componente » + this.name);
}
Así quedaría el componente:
[typescript]import { Component, OnInit, Input, Output, EventEmitter } from ‘@angular/core’;
@Component({
selector: ‘app-child’,
templateUrl: ‘./child.component.html’,
styleUrls: [‘./child.component.css’]
})
export class ChildComponent implements OnInit {
@Input() name: string;
@Input() message: string;
@Output() returnMessage: EventEmitter<string>;
constructor() {
this.returnMessage = new EventEmitter<string>();
}
ngOnInit() {
}
llamarPadre($event){
this.returnMessage.emit(«Mensaje desde el hijo al padre del componente » + this.name);
}
}
[/typescript]
Ahora debemos hacer que el padre escuche al hijo, eso lo hacemos con (nombre_output) cuando hacemos la llamada de un componente.
[typescript]
[message]=»messageComponent1″
(returnMessage)=»recibirMensaje($event)»>
Asi se queda en el HTML. Crearos un atributo llamado mensajeHijo de tipo string en el ts.
[typescript]Padre
Mensaje recibido: {{mensajeHijo}}
Hijo 1
[message]=»messageComponent1″
(returnMessage)=»recibirMensaje($event)»>
Hijo 2
message=»Este es el componente 2″
(returnMessage)=»recibirMensaje($event)»>
En el ts, vamos a crear la función que llamamos al recibir el evento:
[typescript]recibirMensaje($event){
this.mensajeHijo = $event;
}
Os dejo el ejemplo completo en stackblizt:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta