Это моя конфигурация маршрутизации
const routes: Routes = [{
path: '', redirectTo: 'signIn', pathMatch: 'full'
}, {
path: 'signIn', loadChildren: './sign-in/sign-in.module#SignInModule', canActivate: [AuthGuard]
}, {
path: 'signUp', canActivate: [AuthGuard], loadChildren: './sign-up/sign-up.module#SignUpModule'
}, {
path: 'home', canActivate: [AuthGuard], loadChildren: './home/home.module#HomeModule'
}];
И мой охранник
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.webService.getUser().pipe( map(data => {
if (data['status'] === 1 && data['user'] && !data['role']) {
if (state.url === '/signIn' || state.url === '/signUp') {
console.log('home');
this.router.navigate(['home']);
} else {
console.log('true');
return true;
}
} else {
sessionStorage.clear();
if (state.url !== '/signIn' && state.url !== '/signUp') {
this.router.navigate(['signIn']);
} else {
return true;
}
}
}));
}
Он загружает каждый путь с помощью «входа», как когда бы я ни захотел посетить «дом», он переходит на http://localhost:4200/home/signIn
и загружает страницу «входа», но если я удаляю пустой путь, он корректно загружает «домашнюю» страницу. Какой самый лучший способ загрузить только домашнюю страницу? Я не хочу добавлять 'SignIn' на каждую страницу. Большое спасибо.