Angular4路由器与参数的URL冲突

时间:2017-09-18 08:28:09

标签: angular routing angular-routing

我有3条路线,一条用于app模块,另一条用于admin部分,另一条用于客户端。他们在这里:

-- App routing --
export const routes: Routes = [
    { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule' },
    { path: '', redirectTo: 'home', pathMatch: 'full' },
    { path: '**', redirectTo: 'home', pathMatch: 'full' }
];

-- Admin routing --
const routes: Routes = [
    { path: '', component: AdminComponent,
        children: [
            { path: '', redirectTo: 'evenements', pathMatch: 'full' },
            { path: 'evenements', component: AdminEventComponent }
        ]
    }
  ];
  
-- Client routing --
const routes: Routes = [
    { path: '', component: CoreComponent,
        children: [
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: ':city', component: HomeComponent }
        ]
    }
  ];

问题在于,当我尝试转到http://myDomain/admin时,路由器会尝试解析/ admin as:city这是核心路由中的参数。

如何告诉angular的路由器将http://myDomain/admin解析为/ admin,如果其他值将其解析为:city?

谢谢

更新 我通过更改app-module中声明的模块的顺序解决了这个问题,我不得不在ClientModule之前导入AppRoutingModule ......这看起来很奇怪,但它确实有效。

UPDATE2: update1没有解决此问题,路由器在反转导入顺序时忽略了客户端路由器模块

1 个答案:

答案 0 :(得分:0)

解决问题的一种方法是将路径:city更改为home/:city,但这可能不是您想要做的。

编辑:删除了无效的旧答案,仅保留上述答案作为解决OP所述问题的替代方法。