Sé cómo generar un evento con EventEmitter. También puedo adjuntar un método para ser llamado si tengo un componente como este:
<component-with-event (myevent)="mymethod($event)" />
Cuando tengo un componente como este, todo funciona muy bien. Moví algo de lógica a un servicio y necesito generar un evento desde dentro del Servicio. Lo que hice fue esto:
export class MyService {
myevent: EventEmitter = new EventEmitter();
someMethodThatWillRaiseEvent() {
this.myevent.next({data: 'fun'});
}
}
Tengo un componente que necesita actualizar algún valor basado en este evento, pero parece que no puedo hacerlo funcionar. Lo que intenté fue esto:
//Annotations...
export class MyComponent {
constructor(myService: MyService) {
//myService is injected properly and i already use methods/shared data on this.
myService.myevent.on(... // 'on' is not a method <-- not working
myService.myevent.subscribe(.. // subscribe is not a method <-- not working
}
}
¿Cómo hago para que MyComponent se suscriba al evento cuando el servicio que lo genera no es un componente?
Estoy en On 2.0.0-alpha.28
EDITAR: Modifiqué mi "ejemplo de trabajo" para que realmente funcione, por lo que el enfoque se puede poner en la parte que no funciona;)
Código de ejemplo: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv