我的目标是:当点击链接
如何实现?
'auth/login/:tokenKey'
时,将触发一个方法,然后重定向到A或B组件。对于这个链接'auth/login/:tokenKey'
,不需要一个组件。它应该只是ts文件中的一个方法。如何实现?
GetTokenKeyGuard.ts
Original Answer: "最初的回答" canActivate(route: ActivatedRouteSnapshot) {
localStorage.setItem('token_key', route.params.tokenKey);
return true;
}
对于路径'auth/login/:tokenKey'
,我不需要使用组件。在该路径中,会运行一个过程,然后将重定向到索引页面。
但是当我使用'redirectTo'指令时,守卫不起作用。
当我使用组件时,守卫可以正常工作。
如何在没有组件的情况下使用守卫?
app-routing.module.ts
const routes: Routes = [
{ path: '', component: IndexComponent },
{ path: 'auth/login', component: LoginComponent },
{ path: 'auth/login/:tokenKey',
canActivate: [GetTokenKeyGuard],
redirectTo: '' }, //........................ Guard doesnt work.
{ path: 'auth/login/:tokenKey',
canActivate: [GetTokenKeyGuard],
component: LoginComponent }, //............. Guard works.
];