2016-11-09 4 views
0

私はpage1とpage2を持っています。私はページ2のルートでcanActivate gaurdを追加し、page1から来たかどうかを知りたいですか?それ、どうやったら出来るの?角2 - ガールードを無効にするとURLからナビゲートする方法

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
    //If from Page 1 { clearCache() } 
    return true; 
    } 

ありがとうございます。それはあなたのURLを与える:このような

答えて

4

まずのdoItあなたは彼/彼女はあなたから来たURLからにユーザーをリダイレクトしたい場合は

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
     console.log(state.url); 
} 

はこのようにそれを行うことができます。詳細については、下のofficial tutorial docsを読みますを教えてください。セクションを教えてください。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { 
     let url: string = state.url; 

     return this.checkLogin(url); 
     } 

     checkLogin(url: string): boolean { 
     if (this.authService.isLoggedIn) { return true; } 

     // Store the attempted URL for redirecting 
     this.authService.redirectUrl = url; 

     // Navigate to the login page with extras 
     this.router.navigate(['/login']); 
     return false; 
} 
+0

返信いただきありがとうございますが、ログインや一部のページにリダイレクトしたくありません。ユーザーがページ1からこのページ2に移動したときにキャッシュをクリアし、他のページからこのページに移動したときにキャッシュを保持したい – Kashyap

+0

canActivateが実行されると、ページのURLはまだ前のページです。私はwindow.location.hrefでURLを取得することができました。しかし、これを行う角度の方法があるかどうかを確認したい。 – Kashyap

+0

state.urlは、現在のurl.uを提供します。現在のurlユーザーには、ActivatedrouteSnapshotの「スナップショット」プロパティが必要です。 –

関連する問題