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