Как выполнить маршрутизацию в другом компоненте при использовании canActivate()
Я хочу, чтобы перейти непосредственно здесь компонент ResetPassIdComponent
когда я использую canActivate(); Теперь, когда я нажимаю на этот компонент ResetPassIdComponent, моя заявка перемещается в первую очередь в /outsidelogin/login
и во втором resetPasswordRequest/:id
export class AuthGuard implements CanActivate {
constructor(private router: Router, private auth: LoginService) { }
canActivate(): boolean {
if (this.auth.isAuthenticated()) {
return true;
}
this.router.navigate(['/outsidelogin/login']);
return false;
}
}
Таким образом, в этом canActivate () у меня есть 2 условия, во-первых, если я вхожу в систему, и во-вторых, если я не вхожу, перейдите в this.router.navigate(['/outsidelogin/login']);
Мой routing.ts
const routes: Routes = [
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuard],
children: [
{
path: 'fp', component: FirstPageComponent
}
]
},
{
path: 'outsidelogin',
component: outsideloginComponent,
children: [
{ path: 'login', component: LoginFirstComponent },
{ path: 'register', component: RegisterComponent },
]
},
{ path: '', redirectTo: '/home/fp', pathMatch: 'full' },
{ path: 'resetPasswordRequest/:id', component: ResetPassIdComponent }
];
Пожалуйста, не могли бы вы поделиться со мной идеей, как решить мою проблему?
1 ответ
Сначала вам нужно получить параметр в resetPasswordRequest/:id, если при входе в систему получите параметр следующим образом и преобразуйте строку в число. Вы должны хранить свой токен аутентификации в кэше браузера.
// import in resetPasswordeRquest Component.
import { Route, AcivatedRoute } from '@angular/router';
// inside component class;
id: number;
constructor(private router: Router, private route: ActivatedRoute){
this.route.paramMap.subscribe(params => {
this.id = +params.get('id');
}
}