// Part of service
public someEvent: EventEmitter<number> = new EventEmitter();
....
// Component
@Component({
selector: 'some-component',
template: `...`
})
export class SomeComponent {
constructor(public service: Service) {
this.service.someEvent.subscribe((x) => {
// Do something
});
}
}
SomeComponent
/
मार्ग में प्रदर्शित होता है। जब मैं अपने आवेदन में अलग-अलग मार्ग पर नेविगेट करता हूं, और फिर वापस आ जाता हूं, SomeComponent
फिर से ईवेंट की सदस्यता लेता है, जिससे कॉलबैक दो बार आग लग जाता है। घटना के सब्सक्राइब करने के बाद एक बार या सदस्यता की बर्बादी पर सदस्यता कैसे लें?एक बार ईवेंट एमिटर की सदस्यता कैसे लें?
// Can't subscribe after.
ngOnDestroy() {
this.service.someEvent.unsubscribe();
}
आप ngOnInit साथ यह कोशिश की है? – micronyks
@micronyks हाँ मैंने किया, हालांकि कोई सफलता नहीं हुई। इसके अलावा [इस साइट] के अनुसार (http://learnangular2.com/lifecycle/) 'ngOnInit' हर बार कन्स्ट्रक्टर फ़ंक्शन की तरह निकाल दिया जाता है, लेकिन यह प्रारंभ करने के लिए बाल घटकों की प्रतीक्षा करता है। – Eggy
'ऑनइनिट' बाध्यकारी है, आपके लिए काम नहीं करेगा ... कोशिश करें ['CanReuse'] (https://angular.io/docs/ts/latest/api/router/CanReuse-interface.html) – Sasxa