ant*_*oom 5 typescript angular-routing angular
所以我面临着著名的角度路由问题“带有延迟加载模块的命名插座”。这个问题似乎已经结束,这个人提供了一个可行的解决方案,我一直在关注。但是我仍然收到错误并且无法理解这个问题的本质
错误:无法匹配任何路由。网址段:
我尝试使用 pathMatch: 'full' 和不同的重定向路由到不同的组件,但最终总是得到相同的错误。
我已经被困了几个小时,这就是为什么决定在这里提问。我的问题在哪里,我缺少什么?
我的设置
app.routing.ts:
const routes: Routes = [
{
path: '',
loadChildren: 'app/home/home.module#HomeModule',
},
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
},
{
path: 'data',
loadChildren: 'app/data/data.module#DataModule',
},
{
path: '**',
redirectTo: ''
}
];
Run Code Online (Sandbox Code Playgroud)
应用程序组件.html
<app-header></app-header>
<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)
data.routing-module.ts
const routes: Routes = [
{
path: 'summary',
component: SummaryComponent,
canActivate: [AuthGuard],
},
{
path: 'management/:id',
component: DataComponent,
canActivate: [AuthGuard],
children: [
{
path: 'activities',
component: ActivitiesComponent,
outlet: 'activities',
},
{
path: 'researches',
component: ResearchesComponent,
outlet: 'researches',
}
]
},
{
path: 'review/:id',
component: InfoComponent,
canActivate: [AuthGuard],
},
];
Run Code Online (Sandbox Code Playgroud)
数据组件.html
<mat-drawer-container class="docs-viewer-container">
<mat-drawer position='start' [mode]='mode'>
<router-outlet name="activities"></router-outlet>
</mat-drawer>
<mat-drawer position='end' [mode]='mode'>
<router-outlet name="researches"></router-outlet>
</mat-drawer>
<mat-drawer-content>
...
// content
...
</mat-drawer-content>
</mat-drawer-container>
Run Code Online (Sandbox Code Playgroud)
因此,对于数据模块的着陆页是总结部分用户点击链接,导航URL路径看起来像这样以后:'path/data/summary?params'
。Summary.component 有导航功能
onActivitySelection(event) {
this.queryParams.offset = 0;
this.queryParams.limit = 25
this.router.navigate([{
outlets: {
'activities': '/data/management/' + event.id + '/activities'
}
}],
{
queryParams: this.queryParams
})
}
Run Code Online (Sandbox Code Playgroud)
如您所见,重定向路由必须是“/data/management/:id/activities”。但是错误说找不到这条路线。
那么有人可以帮我解决我的问题吗?
尝试将模块的路由容纳在索引组件中。您有一个用于应用程序模块的路由器出口,但没有它下面的任何级别。
对于数据模块的路由:
{
path: '', component: DataIndexComponent, canActivate: [AuthGuard],
children: [
{
path: 'summary',
component: SummaryComponent
},
...[restOfRoutes]
]
}
Run Code Online (Sandbox Code Playgroud)
在 DataIndexComponent 中添加<router-outlet></router-outlet>
.
另一方面,如果您使用相同的身份验证防护,则可以将其放置在模块的索引级别上。
归档时间: |
|
查看次数: |
4169 次 |
最近记录: |