如果角度应用有两个模块:AppModule
和ProfileModule
,则可以配置自己的路由。
在this指南中,它说路由配置的顺序很重要。举个例子:
const appRoutes: Routes = [
{ path: 'crisis-center', component: CrisisListComponent },
{ path: 'hero/:id', component: HeroDetailComponent },
{
path: 'heroes',
component: HeroListComponent,
data: { title: 'Heroes List' }
},
{ path: '',
redirectTo: '/heroes',
pathMatch: 'full'
},
{ path: '**', component: PageNotFoundComponent }
];
此处首先评估crisis-center
路径,最后评估**
路径。
但是,如果AppModule
和ProfileModule
配置了自己的路由,则不清楚如何对某个路由进行评估。如果AppModule
路由配置最终具有**
路由,则与上述配置相匹配,这将匹配与AppModule
中的其他路由不匹配的所有路由。这会使ProfileModule
的路由配置无用。
那么,当有多个模块有自己的路由配置时,路由的优先级如何工作?
答案 0 :(得分:3)
根据那些Angular Docs:
每个路由模块按导入顺序增加路由配置。如果首先列出AppRoutingModule,则会在英雄路线之前注册通配符路由。通配符路由 - 匹配每个URL - 将拦截导航到英雄路线的尝试。
因此,订单基于您导入模块的顺序。在您的示例中,您需要先导入ProfileModule
,以便**
路由列表末尾的AppModule
路由不会阻止处理任何其他路由。
答案 1 :(得分:0)
在多个模块的情况下,通配符路径应该整个应用程序中的一个,就好像每个模块中存在一样,首先导入的一个模块的路由将优先于整个路由集所有其他模块..
导入ModA路由
const ModA_Route = [
{路径:' moda',组件:ModAComp},
{路径:' moda:id',组件:ModADetailComp}
此处没有默认路线
]
导入ModB路由
const ModB_Route = [
{路径:' modb',组件:ModBComp},
{路径:' modb:id',组件:ModBDetailComp}
此处没有默认路线
]
现在是默认路线......这是申请人自己的欢迎页面或类似内容
如果为模块添加默认路由,那么它将如何区别于任何其他模块的默认路由...模块的入口点(app / modA或app / modB)本身应该是默认条目模块本身的一点......任何其他东西都应该默认为应用程序自己的逻辑