Я знаю, как вызвать событие с помощью EventEmitter. Я также могу прикрепить метод, который будет вызываться, если у меня есть такой компонент:
<component-with-event (myevent)="mymethod($event)" />
Когда у меня есть такой компонент, все отлично работает. Я перенес некоторую логику в службу, и мне нужно вызвать событие внутри службы. Я сделал вот что:
export class MyService {
myevent: EventEmitter = new EventEmitter();
someMethodThatWillRaiseEvent() {
this.myevent.next({data: 'fun'});
}
}
У меня есть компонент, которому необходимо обновить какое-то значение на основе этого события, но я не могу заставить его работать. Я пробовал вот что:
//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
}
}
Как заставить MyComponent подписаться на событие, когда вызывающая его служба не является компонентом?
Я использую 2.0.0-alpha.28
РЕДАКТИРОВАТЬ: изменен мой «рабочий пример», чтобы он действительно работал, поэтому можно сосредоточить внимание на неработающей части;)
Пример кода: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv