2016-11-09 1 views
0

У меня есть страница1 и страница2. Я добавил canActivate gaurd на странице2 и хочу знать, если я пришел со страницы1? Как мне это сделать?Угловая 2 - Как получить навигацию с url в canactivate gaurd

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

Заранее спасибо.

ответ

4

Первый пустяк, как это: это даст вам URL:

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

если вы хотите перенаправить пользователя, из которого 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-адрес страницы все еще является предыдущей. поэтому я смог получить url через window.location.href. Но хочу посмотреть, есть ли Угловой способ сделать это. – Kashyap

+0

state.url даст искомый url.u хочет, чтобы текущий пользователь url активировалrouteSnapshot свойство «моментальный снимок». –

Смежные вопросы