我在后端应用中遇到了一个常见问题。 我有几个ressources可以通过咨询这种途径来查看:Angular2嵌套的模块路由具有相同的路由
- 报告/视图/:ID
- campains /视图/:ID
- suts /视图/:ID
- 认证/ view /:id
请注意,路由以相同的部分结束:/ view /:id。
我的应用程序模块是:
App.module
| -MainLayoutModule
| - ReportModule
| - CampaignModule
| - SutModule
| - ...
每个模块(除了mainlayoutModule)定义了它自己的路由。
App.routing
{
path:'certification',
loadChildren: './+certification/certification.module#CertificationModule',
canActivate:[AuthGuard]
},
{
path:'reports',
loadChildren: './+report/report.module#ReportModule'
canActivate:[AuthGuard],
},
{
path:'suts',
loadChildren: './+sut/sut.module#SutModule',
canActivate:[AuthGuard]
},
{
path:'campaigns',
loadChildren: './+campaign/campaign.module#CampaignModule',
canActivate:[AuthGuard]
},...
Report.routing
import { Routes, RouterModule } from '@angular/router';
import { ReportDetailsComponent } from "./ReportDetails/report-details.component";
import { ReportDetailsResolver } from "./ReportDetails/report-details.resolver";
import { ReportListComponent } from "./ReportsList/report-list.component";
export const reportRoutes: Routes = [
{
path: '',
pathMatch: 'full',
redirectTo: 'list'
},
{
path: 'view/:id',
component: ReportDetailsComponent,
data: {
pageTitle: 'Report detail'
},
resolve: {
report: ReportDetailsResolver
},
pathMatch: 'full'
},
{
path: 'list',
component: ReportListComponent,
data: {
pageTitle: 'Reports Lists'
},
pathMatch: 'full'
}
];
export const reportRouting = RouterModule.forChild(reportRoutes);
Campaign.routing
import { Routes, RouterModule } from '@angular/router';
import { CampaignDetailsComponent } from './campaignDetails/campaign-details.component'
import { CampaignDetailsResolver } from './campaignDetails/campaign-details.resolver'
import { CampaignListsComponent } from './campaignList/campaign-list.component'
export const campaignRoutes: Routes = [
{
path: 'view/:id',
component: CampaignDetailsComponent,
data: {
pageTitle: 'Campaign detail'
},
resolve: {
campaign: CampaignDetailsResolver
},
pathMatch: 'full'
},
{
path: 'lists',
component: CampaignListsComponent,
pathMatch: 'full'
}
];
export const campaignRouting = RouterModule.forChild(campaignRoutes);
此役模块需要使用指令从报表组件,这里它的代码:
@NgModule({
imports: [
CommonModule,
campaignRouting,
ReportModule
],
declarations: [CampaignDetailsComponent,CampaignListsComponent],
providers:[CampaignDetailsResolver]
})
export default class CampaignModule { }
这里的问题是:当我去的路线“/运动/视图/:id为”从报表组件模块,而不是从运动部件的路由器网点加载内容...
个愚蠢的方案将在每个模块(像/查看报告/:id,/ viewCampaign /:id ...)有独特的路线,但我认为我在我的应用程序路由配置丢失的东西....
任何想法关于如何解决这类问题? 谢谢, 奥利维尔
这是它!谢谢 !只是使用儿童路线!它的工作 – OlivierTo
不客气。 – noelmace
有关我需要用根组件和RoutingModules重构我的模块的信息! – OlivierTo