2016-10-07 6 views
4

Die Routenänderung kann mit dem Stream router.events erkannt werden. (How to detect a route change in Angular 2?).Wie erkennt man eine URL-Änderung in Winkel 2?

Aber ich bin mir nicht sicher, wie Browser URL Änderung zu erkennen.

+0

Browser-URL-Änderung kann nur durch 2 Faktoren verursacht werden: Route ändern innerhalb Angular2 oder Benutzer manuell eingeben neue URL. Sie können den ehemaligen abonnieren. Letzteres wird die gesamte Anwendung neu laden und das Aufspüren macht keinen Sinn. –

+0

Danke für Ihren Kommentar. Der letztere Fall könnte auch durch Klicken auf eine andere externe URL oder durch Klicken auf die Lesezeichenleiste des Browsers erfolgen. In meiner Anwendung muss ich dies abfangen, um dem Benutzer den Bestätigungsdialog für nicht gespeicherte Änderungen anzuzeigen. –

Antwort

1

können Sie Location injizieren und

constructor(location:Location) { 
    location.subscribe(val => console.log(val); 
} 

Als Harry erwähnt abonnieren. Dies benachrichtigt nur über PopState-Ereignisse (der Router oder ähnlicher Code ändert die URL)

+1

Danke. Es gibt also keine integrierte Möglichkeit, alle URL-Änderungen zu erfassen. nicht wie: '$ rootScope. $ on ('$ stateChangeStart,() => {...})' in eckig 1 –

+1

siehe hier: https://stackoverflow.com/questions/33520043/how-to- detect-a-route-change-in-angular-2 – peter70

+0

'Eigenschaft 'subscribe' existiert nicht für den Typ 'Location'.' – Inigo