ฉันรู้วิธีเพิ่มเหตุการณ์ด้วย 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 สมัครเข้าร่วมกิจกรรมได้อย่างไรเมื่อบริการที่ยกมานั้นไม่ใช่ส่วนประกอบ
ฉันใช้ On 2.0.0-alpha.28
แก้ไข: แก้ไข "ตัวอย่างการทำงาน" ของฉันให้ใช้งานได้จริงดังนั้นจึงสามารถโฟกัสไปที่ส่วนที่ไม่ทำงานได้)
ตัวอย่างโค้ด: http://plnkr.co/edit/m1x62WoCHpKtx0uLNsIv