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
并且不能以同步方式工作