【问题标题】:Angular routes loading different component on empty path角度路由在空路径上加载不同的组件
【发布时间】:2020-03-04 16:59:11
【问题描述】:

我的项目结构是这样的:

app/
--main/
  --dashboard/
    --home/
    --admin/
      --users/

每个文件夹都包含一个模块和一个组件(auth 除外)。我的想法是让每条路线都由其模块分隔,并将其他所有内容重定向到 /dashboard。

在 app.module 里面我有这个路由:

{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: '**', redirectTo: 'dashboard' }

在dashboard.module里面我有这个:

{
    path: '',
    canActivate: [AuthGuard],
    component: DashboardComponent,
    children: [
        { path: 'dashboard', component: HomeComponent },
        { path: 'admin', loadChildren: './admin/admin.module#AdminModule' }
    ]
}

在 admin.module 内部:

{ path: 'users', loadChildren: './users/users.module#UsersModule' }

在 users.module 内部:

{ path: '', component: UsersComponent }

现在一切正常,/admin/users 加载 UsersComponent,/dashboard 加载 DashboardComponent。但是当我尝试转到/ 时,它没有加载 DashboardComponent,而是加载了 UsersComponent。为什么会这样?

【问题讨论】:

  • 可以分享一下AppModule文件的内容吗?
  • 你好,是一个私人项目,你到底想看什么?我认为除了路线之外没有任何必要
  • AppModule 中的导入顺序对路由很重要。尝试更改顺序或分享文件内容以供我们帮助。

标签: angular


【解决方案1】:

如何切换子路径的顺序

{
    path: '',
    canActivate: [AuthGuard],
    component: DashboardComponent,
    children: [
        { path: 'admin', loadChildren: './admin/admin.module#AdminModule' },
        { path: 'dashboard', component: HomeComponent }

    ]
}

因为那没有用。尝试模块导入的顺序。似乎 UserModule 的空白路径被选择而不是重定向到仪表板。确保 app.module 中的 RouterModule 导入是最后一个

【讨论】:

  • 如何确保 app.module 中的 RouterModule 是最后导入的?
  • 很难说没有看到应用程序模块,但是应用程序模块使用路径,直接在 app.module 中使用 RouterModule.forRoot(paths) 或从单独的 AppRoutingModule 导入,确保它是导入数组中的最后一项
猜你喜欢
  • 2018-07-11
  • 2018-04-23
  • 2021-04-22
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
相关资源
最近更新 更多