Angular 2 Router Event Listener

Wie kann ich die Statusänderung in einem Angular 2-Router abhören?

In Angular 1.x habe ich dieses Event benutzt:

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

So, wenn ich diesen Eventlistener in Angular 2 benutze:

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

Es wird nicht 'ok' zurückgegeben, sondern der Status von JS geändert. Erst dann wird die Funktion history.back () des Browsers ausgeführt.

Verwenden Sie die Funktion router.subscribe () als Dienst:

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

Injizieren Sie den Dienst in die Komponente, die das Routing initiiert:

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

Ich füge diesen Dienst in andere Komponenten wie in diesem Beispiel ein. Dann ändere ich den Status, console.info () im Dienst funktioniert nicht.

Was ich falsch mache

Antworten auf die Frage(12)

Ihre Antwort auf die Frage