Прослушиватель событий маршрутизатора Angular 2

Как прослушать изменение состояния в роутере Angular 2?

В Angular 1.x я использовал это событие:

$rootScope.$on('$stateChangeStart',
    function(event,toState,toParams,fromState,fromParams, options){ ... })

Итак, если я использую этот EventListener в Angular 2:

window.addEventListener("hashchange", () => {return console.log('ok')}, false);

он не возвращает «ок», затем изменяет состояние с JS, только тогда запускается функция браузера history.back ().

Используйте функцию router.subscribe () в качестве службы:

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');
        })
    }
}

Внедрить сервис в компонент, который инициализируется в маршрутизации:

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) {}
}

Я внедряю этот сервис в другие компоненты, такие как в этом примере. Затем я меняю состояние, console.info () в сервисе не работает.

Что я делаю не так?

Ответы на вопрос(6)

Ваш ответ на вопрос