Te recomendamos que revises esta respuesta en un entorno controlado antes de pasarlo a producción, saludos.
Solución:
EventEmitter admite un argumento, que se pasa como $event
a su controlador de eventos.
Envuelva sus parámetros en un objeto de evento cuando lo pase a emit
:
this.stopSort.emit( event:event, ui: ui );
Luego, cuando maneje el evento, use $event
:
stopSort($event)
alert('event param from Component: ' +$event.event);
alert('ui param from Component: ' + $event.ui);
Plnkr de demostración
La respuesta de pixelbits ha cambiado un poco con el lanzamiento final. Si tiene varios parámetros, simplemente páselo como un solo objeto.
Componente hijo:
this.stopSort.emit(event,ui);
@Output() stopSort= new EventEmitter();
Componente principal:
hereIsHeight(value)
console.log("Height = " + value.event);
console.log("Title = " + value.ui);
HTML en el componente principal:
— También si tienes valores como: (con el “esto” delante)
this.stopSort.emit(this.event,this.ui);
no funcionarán, debe cambiarlos a otra cosa y luego pasar como:
let val1 = this.event;
let val2 = this.ui;
this.stopSort.emit(val1,val2);
* Actualización: lea la respuesta de Colin B a continuación para conocer una forma de pasar valores con “esto”.
No puedo agregar un comentario, pero solo quería señalar de la respuesta de Alpha Bravo que puedes pasar this.event
simplemente no puede usar la abreviatura del valor de la propiedad:
this.stopSort.emit( event : this.event, ui : this.ui );
También tenga en cuenta que si se pasan a través de EventEmmiter como this.stopSort.emit( val1, val2 );
entonces se accedería a ellos en el padre como:
hereIsHeight(value)
console.log(`event = $ value.val1 `);
console.log(`ui = $ value.val2 `);
Por lo tanto, evitar la taquigrafía podría ser preferible en este tipo de situación para mantener la consistencia en la nomenclatura.
Si posees algún dilema y forma de progresar nuestro ensayo te recomendamos escribir una acotación y con deseo lo observaremos.