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,它只需要从头开始重建,没有调试那个东西。
编辑:
实际解决方案,对于未找到的组件,我使用路径:“*”而不是“**”。
我一直在与另一个并排的 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,它只需要从头开始重建,没有调试那个东西。
编辑:
实际解决方案,对于未找到的组件,我使用路径:“*”而不是“**”。