Я знаю, як підняти подію за допомогою 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