我有一个非常简单的路由器配置:
export const routes: Routes = [
{
path: '',
component: MiddleComponent,
pathMatch: 'full',
children: [
{
path: '',
redirectTo: './task-queue',
pathMatch: 'full',
},
{
path: 'task-queue',
component: TestComponent,
},
]
},
];
演示:https://stackblitz.com/edit/angular-a7sxdf?file=app%2Fapp.routing.ts
MiddleComponent
的模板仅是<router-outlet></router-outlet>
。
我希望页面加载后应该重定向到task-queue
,但不是。我可以看到MiddleComponent
被渲染,但是TestComponent
没有被渲染。
答案 0 :(得分:0)
需要为测试队列添加具有重定向属性的另一条路径。
export const routes: Routes = [
{ path: '', redirectTo: '/task-queue' ,
pathMatch: 'full'},
{ path: '', component: MiddleComponent,
children: [
{ path: '', redirectTo: '/task-queue',pathMatch: 'full' },
{ path: 'task-queue', component: TestComponent }
]
}
];
答案 1 :(得分:0)
您可以尝试将父路由从pathMatch
更改为前缀,并从子路由中删除./
(Angular documentation for redirecting)
export const routes: Routes = [
{
path: '',
component: MiddleComponent,
pathMatch: 'prefix',
children: [
{
path: '',
redirectTo: 'task-queue',
pathMatch: 'full',
},
{
path: 'task-queue',
component: TestComponent,
},
]
},
];
我通过阅读https://github.com/angular/angular/issues/14692得到了解决方案(这似乎并不仅仅适用于惰性路线)
但是从父级直接重定向到/task-queue
的解决方案也可以