Angular 路由取决于用户是否登录

Angular 路由取决于用户是否登录,angular,Angular,我有以下路线 { path: '', loadChildren: './home/home.module#HomeModule' } 当用户登录时,我想为同一根路径加载不同的模块 根据用户是否登录,路由到页面的正确方式是什么 使用resetconfig似乎是一条可行之路。但我不确定如何通过延迟加载实现这一点。我正在应用程序加载期间调用resetConfig this.router.resetConfig([ { path: '', loadChildren: './user/use

我有以下路线

{ path: '', loadChildren: './home/home.module#HomeModule' }
当用户登录时,我想为同一根路径加载不同的模块

根据用户是否登录,路由到页面的正确方式是什么

使用resetconfig似乎是一条可行之路。但我不确定如何通过延迟加载实现这一点。我正在应用程序加载期间调用resetConfig

 this.router.resetConfig([
     { path: '', loadChildren: './user/user.module#UserModule' },
  ]);
但我可能还需要在user.module中动态指定子根,因为如果它们已经在模块文件中定义,路由将被覆盖

const ROUTES: Routes = [
 { path: '', component: UserComponent }
]; 

@NgModule({
imports: [
    RouterModule.forChild(ROUTES),
    ],

declarations: [
    UserComponent
],
exports: [UserComponent],
providers: []
 })
 export class UserModule {
 }

您知道如何通过延迟加载实现resetConfig吗?

在运行时,您可以使用方法更改路由配置并替换此指定路径的模块名

谢谢@echonax,但是我想将用户重新路由到同一路径,但加载不同的模块。例如,根路径www.examplesite.com应根据用户是否登录显示不同的模式。你知道这在路由中是否可行吗?@doorman:你是说仅仅将用户重定向到另一个路径(如果他们登录)是不可行的?嗨@AngularFrance,我不希望url更改为www.examplesite.com/redirectedroute,我希望它保持在www.examplesite.com,即使用户登录在I@s-f resetconfig中,这似乎是最好的选择。我更新了上面关于如何通过延迟加载实现这一点的问题。@doorman我没有理解“但我可能还需要在user.module中动态指定子根,因为如果它们已经在模块文件中定义,路由将被覆盖。”为什么你必须以友好的方式定义它们?重写它们有什么问题?对不起,关于这一点。最后,我决定为每个人安排一条不同的路线。但我将此标记为正确答案,只需要找出如何使其在惰性加载下工作。但是我不再需要它了。@doorman如果你做了不同的路由,那么你就不需要.resetConfig(),只需要使用文档中描述的路由保护