Je sais comment créer un événement avec l'EventEmitter. Je peux également attacher une méthode à appeler si j'ai un composant comme celui-ci:
<component-with-event (myevent)="mymethod($event)" />
Quand j'ai un composant comme celui-ci, tout fonctionne très bien. J'ai déplacé une certaine logique dans un service et je dois déclencher un événement depuis l'intérieur du service. Voici ce que j'ai fait:
export class MyService {
myevent: EventEmitter = new EventEmitter();
someMethodThatWillRaiseEvent() {
this.myevent.next({data: 'fun'});
}
}
J'ai un composant qui doit mettre à jour une certaine valeur en fonction de cet événement, mais je n'arrive pas à le faire fonctionner. Voici ce que j'ai essayé:
//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
}
}
Comment puis-je faire en sorte que MyComponent s'abonne à l'événement lorsque le service qui le déclenche n'est pas un composant?
Je suis sur 2.0.0-alpha.28
EDIT: J'ai modifié mon "exemple de travail" pour qu'il fonctionne réellement, afin que l'accent puisse être mis sur la partie qui ne fonctionne pas;)
Exemple de code: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv