// 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
viene visualizzato nel percorso /
. Quando navigo su un percorso diverso nella mia applicazione e torno di nuovo, SomeComponent
si iscriverà nuovamente all'evento, facendo sì che il callback si attivi due volte. Come iscriversi all'evento una volta o annullare l'iscrizione alla distruzione del componente e iscriversi nuovamente?Come iscriversi all'emettitore di eventi una volta?
// Can't subscribe after.
ngOnDestroy() {
this.service.someEvent.unsubscribe();
}
Avete provato con ngOnInit? – micronyks
@micronyks Sì, ma non ho avuto successo. Sempre secondo [questo sito] (http://learnangular2.com/lifecycle/) 'ngOnInit' viene attivato ogni volta proprio come la funzione di costruzione, ma attende l'inizializzazione dei componenti figlio. – Eggy
'OnInit' è per l'associazione, non funzionerà per te ... prova [' CanReuse'] (https://angular.io/docs/ts/latest/api/router/CanReuse-interface.html) – Sasxa