Я знаю, как поднять событие с помощью 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
EDIT: изменил мой "рабочий пример", чтобы фактически работать, поэтому фокус может быть помещен в нерабочую часть;)
Пример кода: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv