2016-05-12 11 views
1

Mit Angular 2 habe ich eine Komponente, die einen Dienst basierend auf dem URL-Hash abonniert. Durch die URL-Änderung werden keine Unterkomponenten aufgerufen. Ich nehme an, dass dies Route erfordern würde, obwohl Location geeigneter sein könnte. Wie höre und reagiere ich auf ein Pop-State-Event?Angular 2 - Wie erkennt eine Komponente eine URL-Änderung?

Antwort

2

Wenn Sie Routenänderungen hören möchten, können Sie den Router verwenden.

import {Location} from '@angular/common'; 
import {Router} from '@angular/router' 

export class SomeComponent { 
    constructor(router:Router, private location:Location) { 
    router.changes.subscribe(() => this.routeChanged()); 
    } 

    private routeChanged():void { 
    var path:string = this.location.path(); 
    console.log("Path:" + path); 
    } 
} 

Wollen Sie das tun?

+0

Wo haben Sie Router.changes() gefunden? Es ist nicht in der [Router-Dokumentation] (https://angular.io/docs/js/latest/api/router/Router-class.html) – ebakunin

+0

https://github.com/angular/angular/blob/b30ddfbfc5192f526ceaac525cf6965635831c46 aufgeführt /modules/%40angular/router/src/router.ts#L74. https://angular.io/docs/ts/latest/api/router/index/Router-interface.html zeigt auch "' Änderungen: Observable ' Eine Observable oder URL ändert sich vom Router." –

+0

@ GünterZöchbauer Wenn ich den obigen Code ausführen bekomme ich einen Fehler. Wird der Code korrekt erstellt? Ich führe Version 2.0.0-beta.9. 'TypeError: router.changes ist undefined' – ebakunin

Verwandte Themen