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?