重新加载 Angular 个子组件会将用户带到 localhost:4200
Reloading Angular children component takes user to localhost:4200
在我的 Angular 应用程序中,我有一些可能采用路由参数的子组件。我可以轻松地从父级重定向到这些子组件,但是当我重新加载子组件时,应用程序导航到 localhost:4200
并给出如下路由错误。
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'project-setup/project-setup-steppers'
这是我的路由配置:
const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthenticationGuardService] },
{ path: 'project-setup', component: ProjectSetupComponent, canActivate: [AuthenticationGuardService] ,
children: [
{
path: 'project-setup-steppers/:projectId',
component: ProjectSetupSteppersComponent,
canActivate: [AuthenticationGuardService]
},
{
path: 'selfs', component: SelfsComponent, canActivate: [AuthenticationGuardService],
children: [
{
path: 'raters/:selfUserId/:formSetUpKey',
component: RatersComponent, canActivate: [AuthenticationGuardService]
}
]
},
]},
{ path: 'participant-setup', component: ParticipantSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'launch-and-status', component: LaunchStatusComponent, canActivate: [AuthenticationGuardService] },
{ path: 'launch-project-desc', component: LaunchProjectDescriptionComponent, canActivate: [AuthenticationGuardService] },
{ path: 'question-setup', component: QuestionSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'email-setup', component: EmailSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'participant-steppers', component: ParticipantSteppersComponent, canActivate: [AuthenticationGuardService], children: [] },
{
path: 'report-project-list', component: ReportProjectListComponent, canActivate: [AuthenticationGuardService],
children: [
{
path: 'report-project-detail-list/:projectId',
component: ReportProjectDetailListComponent, canActivate: [AuthenticationGuardService]
}
]
},
{ path: 'report-detail/:id/:type', component: ReportDetailComponent, canActivate: [AuthenticationGuardService] },
{ path: 'trial/:projectId', component: TrailRunProjectComponent, canActivate: [AuthenticationGuardService] },
{ path: 'status-of-project/:projectId', component: StatusOfProjectComponent, canActivate: [AuthenticationGuardService] },
{ path: 'project-status-details', component: ProjectStatusDetailsComponent, canActivate: [AuthenticationGuardService] },
{ path: 'news', component: NewsComponent, canActivate: [AuthenticationGuardService] },
{ path: 'view-responses/:assigneeId', component: ViewProjectResponsesComponent, canActivate: [AuthenticationGuardService] },
{ path: 'copy-project/:projectId', component: CopyProjectComponent, canActivate: [AuthenticationGuardService] }
];
我在父组件中使用嵌套 router-outlet
来渲染子组件。
即使用户从子组件重新加载应用程序,我也想保持相同的路线。
将此添加到您的应用程序路由文件
...
},
{
path: 'report-project-detail-list',
component: ReportProjectDetailListComponent, canActivate: [AuthenticationGuardService]
}
如果您需要它,您必须定义带有和不带参数的路线。
在我的 Angular 应用程序中,我有一些可能采用路由参数的子组件。我可以轻松地从父级重定向到这些子组件,但是当我重新加载子组件时,应用程序导航到 localhost:4200
并给出如下路由错误。
Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'project-setup/project-setup-steppers'
这是我的路由配置:
const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthenticationGuardService] },
{ path: 'project-setup', component: ProjectSetupComponent, canActivate: [AuthenticationGuardService] ,
children: [
{
path: 'project-setup-steppers/:projectId',
component: ProjectSetupSteppersComponent,
canActivate: [AuthenticationGuardService]
},
{
path: 'selfs', component: SelfsComponent, canActivate: [AuthenticationGuardService],
children: [
{
path: 'raters/:selfUserId/:formSetUpKey',
component: RatersComponent, canActivate: [AuthenticationGuardService]
}
]
},
]},
{ path: 'participant-setup', component: ParticipantSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'launch-and-status', component: LaunchStatusComponent, canActivate: [AuthenticationGuardService] },
{ path: 'launch-project-desc', component: LaunchProjectDescriptionComponent, canActivate: [AuthenticationGuardService] },
{ path: 'question-setup', component: QuestionSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'email-setup', component: EmailSetupComponent, canActivate: [AuthenticationGuardService] },
{ path: 'participant-steppers', component: ParticipantSteppersComponent, canActivate: [AuthenticationGuardService], children: [] },
{
path: 'report-project-list', component: ReportProjectListComponent, canActivate: [AuthenticationGuardService],
children: [
{
path: 'report-project-detail-list/:projectId',
component: ReportProjectDetailListComponent, canActivate: [AuthenticationGuardService]
}
]
},
{ path: 'report-detail/:id/:type', component: ReportDetailComponent, canActivate: [AuthenticationGuardService] },
{ path: 'trial/:projectId', component: TrailRunProjectComponent, canActivate: [AuthenticationGuardService] },
{ path: 'status-of-project/:projectId', component: StatusOfProjectComponent, canActivate: [AuthenticationGuardService] },
{ path: 'project-status-details', component: ProjectStatusDetailsComponent, canActivate: [AuthenticationGuardService] },
{ path: 'news', component: NewsComponent, canActivate: [AuthenticationGuardService] },
{ path: 'view-responses/:assigneeId', component: ViewProjectResponsesComponent, canActivate: [AuthenticationGuardService] },
{ path: 'copy-project/:projectId', component: CopyProjectComponent, canActivate: [AuthenticationGuardService] }
];
我在父组件中使用嵌套 router-outlet
来渲染子组件。
即使用户从子组件重新加载应用程序,我也想保持相同的路线。
将此添加到您的应用程序路由文件
...
},
{
path: 'report-project-detail-list',
component: ReportProjectDetailListComponent, canActivate: [AuthenticationGuardService]
}
如果您需要它,您必须定义带有和不带参数的路线。