我正在开发一个角度应用程序,它具有以下URL路径,
除了AuthGuard外,所有路线我都加了。如果未通过身份验证,AuthGuard
将重定向到auth\login
。
app-routing.module.ts
export const Approutes: Routes = [
{
path: '',
canActivate: [AuthGuard],
component: FullComponent,
loadChildren: () => import('./pages/pages.module').then(m => m.PagesModule) // loading from pages-routing.ts
},
{
path: 'auth',
component: PlainComponent,
children: [
{
path: '',
pathMatch: 'full',
redirectTo: 'login'
},
{
path: 'login',
component: LoginComponent
}
]
},
{
path: '**',
redirectTo: ''
}
];
pages-routing.ts
export const PagesRoutes: Routes = [
{
path: '',
children: [
{
path: '',
pathMatch: 'full',
redirectTo: 'courses'
},
{
path: 'courses',
component: CourseMainPageComponent,
data: {
title: 'My Courses'
}
},
{
path: 'courses/create',
component: CourseCreatePageComponent,
data: {
title: 'Create Course'
}
},
{
path: 'courses/:id',
component: CourseShowPageComponent,
data: {
title: 'Course Detail'
}
},
]
}
];
问题
所有路线和authGuard工作正常。但是当我输入根URL \
时,我需要重定向到\courses
,但是它不起作用。 in root URL \
AuthGuard甚至没有将 me重定向到auth\login
。
注意:我没有得到任何运行时或编译错误。
发布于 2020-04-26 01:30:08
您需要在用于重定向的路由中将pathMatch策略更改为full
。根据医生的说法,
路径匹配策略“完全”匹配整个URL。在重定向空路径路由时,这一点很重要。否则,由于空路径是任何URL的前缀,即使在导航到重定向目标时,路由器也会应用重定向,从而创建一个无穷无尽的循环。
您的路由配置现在将如下所示
export const PagesRoutes: Routes = [{
path: '',
children: [{
path: '',
redirectTo: 'courses',
pathMatch: 'full'
},
// Add other routes here
]
}];
https://stackoverflow.com/questions/61438187
复制相似问题