Angular 2 router oyente de eventos
¿Cómo escuchar el cambio de estado en el enrutador Angular 2?
En Angular 1.x utilicé este evento:
$rootScope.$on('$stateChangeStart',
function(event,toState,toParams,fromState,fromParams, options){ ... })
Entonces, si uso este eventlistener en Angular 2:
window.addEventListener("hashchange", () => {return console.log('ok')}, false);
no devuelve 'ok', luego cambia el estado de JS, solo luego se ejecuta la función history.back () del navegador.
Utilice la función router.subscribe () como servicio:
import {Injectable} from 'angular2/core';
import {Router} from 'angular2/router';
@Injectable()
export class SubscribeService {
constructor (private _router: Router) {
this._router.subscribe(val => {
console.info(val, '<-- subscribe func');
})
}
}
Inyecte el servicio en el componente que se inicia en el enrutamiento:
import {Component} from 'angular2/core';
import {Router} from 'angular2/router';
@Component({
selector: 'main',
templateUrl: '../templates/main.html',
providers: [SubscribeService]
})
export class MainComponent {
constructor (private subscribeService: SubscribeService) {}
}
Inyecto este servicio en otros componentes como en este ejemplo. Luego cambio el estado, console.info () en el servicio no funciona.
¿Qué hice mal?