Angular 在不加载角度为2/4的路由组件的情况下重定向
我已经为我的注册路径定义了一个解析器:Angular 在不加载角度为2/4的路由组件的情况下重定向,angular,typescript,Angular,Typescript,我已经为我的注册路径定义了一个解析器: import {IsLoggedin} from './share/is-loggedin.service'; const appRoutes: Routes = [ {path: 'signup', resolve: [IsLoggedin], component: SignupComponent} ] 在解析器中,如果用户登录,我将重定向到某个页面: resolve(route: ActivatedRouteSnapshot, router
import {IsLoggedin} from './share/is-loggedin.service';
const appRoutes: Routes = [
{path: 'signup', resolve: [IsLoggedin], component: SignupComponent}
]
在解析器中,如果用户登录,我将重定向到某个页面:
resolve(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {
this.authService.isUserAuthenticated()
.subscribe(
(res: any) => {
if (res === true) {
this.router.navigate(['/main-board']);
}
}
);
}
但是,angular会在重定向到主板页面之前加载SignupComponent
注意:我已经尝试了
CanActivate
guard,但是它仍然无法在不加载组件网的情况下重定向,因为isUserAuthenticated()
方法返回一个可观察的
,并且不能以同步方式工作
我真的想知道,在angular中,是否可以在不加载注册组件的情况下重定向到主板页面
在角度为2/4的情况下能顺利完成吗
如果有人能帮助我,我将不胜感激。如果使用了guard而不是guard,那么重定向将非常顺利。在重定向之前,它不会加载路由组件SignupComponent
:
import {IsLoggedin} from './share/is-loggedin.service';
const appRoutes: Routes = [
{path: 'signup', canActivate: [IsLoggedin], component: SignupComponent}
]
is-loggedin.service.ts:
canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {
/* this.authService.isUserAuthenticated() return an http Observable */
return this.authService.isUserAuthenticated()
.map((res: any) => {
if (res === true) {
this.router.navigate(['/main-board']);
return false;
}
return true;
}
);
}
考虑为你的案件使用警卫。也许是个活跃的警卫CanActivate
guard仍然无法在不加载组件网的情况下重定向,因为isUserAuthenticated()
方法返回一个Observable
并且不能以同步方式工作