两个模块

时间:2018-03-08 02:53:30

标签: angular

如果角度应用有两个模块:AppModuleProfileModule,则可以配置自己的路由。

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路径,最后评估**路径。

但是,如果AppModuleProfileModule配置了自己的路由,则不清楚如何对某个路由进行评估。如果AppModule路由配置最终具有**路由,则与上述配置相匹配,这将匹配与AppModule中的其他路由不匹配的所有路由。这会使ProfileModule的路由配置无用。

那么,当有多个模块有自己的路由配置时,路由的优先级如何工作?

2 个答案:

答案 0 :(得分:3)

根据那些Angular Docs

  

每个路由模块按导入顺序增加路由配置。如果首先列出AppRoutingModule,则会在英雄路线之前注册通配符路由。通配符路由 - 匹配每个URL - 将拦截导航到英雄路线的尝试。

因此,订单基于您导入模块的顺序。在您的示例中,您需要先导入ProfileModule,以便**路由列表末尾的AppModule路由不会阻止处理任何其他路由。

答案 1 :(得分:0)

在多个模块的情况下,通配符路径应该整个应用程序中的一个,就好像每个模块中存在一样,首先导入的一个模块的路由将优先于整个路由集所有其他模块..

  1. 导入ModA路由

    const ModA_Route = [
        {路径:' moda',组件:ModAComp},
        {路径:' moda:id',组件:ModADetailComp}
         此处没有默认路线 ]

  2. 导入ModB路由

    const ModB_Route = [   {路径:' modb',组件:ModBComp},
      {路径:' modb:id',组件:ModBDetailComp}
      此处没有默认路线 ]

  3. 现在是默认路线......这是申请人自己的欢迎页面或类似内容

  4. 如果为模块添加默认路由,那么它将如何区别于任何其他模块的默认路由...模块的入口点(app / modA或app / modB)本身应该是默认条目模块本身的一点......任何其他东西都应该默认为应用程序自己的逻辑