Eu sei como gerar um evento com o EventEmitter. Também posso anexar um método a ser chamado se tiver um componente como este:
<component-with-event (myevent)="mymethod($event)" />
Quando tenho um componente como esse, tudo funciona muito bem. Mudei alguma lógica para um serviço e preciso gerar um evento de dentro do serviço. O que eu fiz foi isso:
export class MyService {
myevent: EventEmitter = new EventEmitter();
someMethodThatWillRaiseEvent() {
this.myevent.next({data: 'fun'});
}
}
Eu tenho um componente que precisa atualizar algum valor com base neste evento, mas não consigo fazer funcionar. O que eu tentei foi isso:
//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
}
}
Como faço para que MyComponent se inscreva no evento quando o serviço que o gera não é um componente?
Estou em 2.0.0-alpha.28
EDIT: Modifiquei meu "exemplo de trabalho" para realmente funcionar, então o foco pode ser colocado na parte que não está funcionando;)
Código de exemplo: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv