我知道如何使用 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
编辑:修改我的“工作示例”以使其实际工作,因此可以将重点放在不工作的部分;)