2016-10-07 10 views
4

router.eventsストリームを使用してルート変更を検出できます。 (How to detect a route change in Angular 2?)。角度2のURLの変化を検出するにはどうすればよいですか?

ブラウザのURLの変更を検出する方法がわかりません。

+0

ブラウザURLの変更は、2つの要因によってのみ発生します。前者を購読することができます。後者はアプリケーション全体をリロードし、それを検出することは意味をなさない。 –

+0

コメントありがとうございます。後のケースでは、ユーザーが他の外部URLをクリックしたり、ブラウザのブックマークバーをクリックしたりすることもあります。私のアプリケーションでは、Unsaved Changes確認ダイアログをユーザーに提示するためにこれをキャッチする必要があります。 –

答えて

1

あなたはLocationを注入し、ハリーが述べたように、それ

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

を購読することができます。これは、popStateイベント(ルータまたは同様のコードがURLを変更する)についてのみ通知します。

+1

ありがとうございます。したがって、URLの変更をすべてキャッチする組み込みの方法はありません。次のようにはなりません: '$ stateSchedule。$ on( '$ stateChangeStart'、()=> {...})' –

+1

ここをクリックしてください:https://stackoverflow.com/questions/33520043/how-to-角度2の経路変更を検出する – peter70

+0

''subscribe'プロパティは 'Location'タイプに存在しません。 ' – Inigo

関連する問題