Angular7 使用菜单激活路由有效,但无论如何复制粘贴任何路由都会重定向到主页

Angular7 using menu to activate route works but copy-pasting any route redirects to homepage no matter what

我一直在与另一个并排的 angular6 项目进行比较,除了使用 'sidenav' 导航之外,我看不出有任何其他区别。我将 router-outlet 保留在 sidenav 容器内的 app.component 中,但我也将其从那里取出并放在文件顶部以确保它不是罪魁祸首。

如果我使用正常导航去某个地方component/route,即使有路线参数,一切都很好。

当我尝试导航到 link 时,它会重定向到主页,而 router-outlet 甚至不会加载 'home' 组件。

我的路由模块代码:

const routes: Routes = [
      {
        path: 'admin-panel/:resource',
        component: AdminPanelComponent,
        canActivate: [AdalGuard, TenantGuard]
      },
      { path: '', component: HomeComponent, canActivate: [AdalGuard] },
      { path: '*', component: NotFoundComponent, canActivate: [AdalGuard] }
    ];

    @NgModule({
      imports: [RouterModule.forRoot(routes)],
      exports: [RouterModule]
    })
    export class AppRoutingModule {}

正如 benshabatnoam 所评论的,您需要在 '' 的路径上有 pathMatch: 'full',否则,一切都匹配它。

 { path: '', component: HomeComponent, canActivate: [AdalGuard],  pathMatch: 'full' },

阅读有关 angular 文档的更多信息 here

不一定是解决方案,但在我的具体情况下,发生这种情况是因为我将 Guard 编写为 canActivate,它只需要从头开始重建,没有调试那个东西。

编辑:

实际解决方案,对于未找到的组件,我使用路径:“*”而不是“**”。