gpt4 book ai didi

Angular 7,命名路由器 socket 在延迟加载的模块中不起作用

转载 作者:行者123 更新时间:2023-12-03 16:39:12 26 4
gpt4 key购买 nike

所以我遇到了著名的 Angular 路由问题"named outlet with lazy loaded module" .此问题似乎已关闭,this guy provided a plunker使用我一直在关注的工作解决方案。但是我仍然收到错误并且无法理解此问题的性质

Error: Cannot match any routes. URL Segment:



我尝试使用 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: ''
}
];

app.component.html
<app-header></app-header>
<router-outlet></router-outlet>

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],
},
];

data.component.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>

因此,在用户单击链接导航 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
})
}

如您所见,重定向路由必须是“/data/management/:id/activities”。但是错误说找不到这条路线。

那么有人可以帮我解决我的问题吗?

最佳答案

尝试将模块的路由包含在索引组件中。您有一个用于应用程序模块的路由器 socket ,但没有任何低于它的级别。

对于数据模块的路由:

{
path: '', component: DataIndexComponent, canActivate: [AuthGuard],
children: [
{
path: 'summary',
component: SummaryComponent
},
...[restOfRoutes]
]
}

在 DataIndexComponent 中添加 <router-outlet></router-outlet> .

另一方面,如果您使用相同的身份验证保护,则可以将其放在模块的索引级别。

关于Angular 7,命名路由器 socket 在延迟加载的模块中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55479397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com