Saya tahu cara meningkatkan acara dengan EventEmitter. Saya juga dapat melampirkan metode untuk dipanggil jika saya memiliki komponen seperti ini:
<component-with-event (myevent)="mymethod($event)" />
Ketika saya memiliki komponen seperti ini, semuanya bekerja dengan baik. Saya memindahkan beberapa logika ke dalam sebuah layanan dan saya perlu memunculkan sebuah acara dari dalam Layanan. Apa yang saya lakukan adalah ini:
export class MyService {
myevent: EventEmitter = new EventEmitter();
someMethodThatWillRaiseEvent() {
this.myevent.next({data: 'fun'});
}
}
Saya memiliki komponen yang perlu memperbarui beberapa nilai berdasarkan acara ini tetapi sepertinya saya tidak dapat membuatnya berfungsi. Yang saya coba adalah ini:
//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
}
}
Bagaimana cara membuat MyComponent berlangganan ke acara jika layanan yang memunculkannya bukan merupakan komponen?
Saya menggunakan On 2.0.0-alpha.28
EDIT: Modifikasi "contoh kerja" saya menjadi benar-benar berfungsi, sehingga fokus dapat diletakkan pada bagian yang tidak berfungsi;)
Kode contoh: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv