【发布时间】:2020-08-29 09:23:59
【问题描述】:
我在我的 Angular 应用程序中有以下路径,对于 home,路径基本 href 设置为 /home/,对于创建 /create/
http://localhost:3000/home/account
https://localhost:3000/create/account
动态路由配置路径,
export const AppRoute = {
'homeRoutes': [
{ path: 'account', loadChildren: () => import('@home').then(m => m.HomeModule) },
{ path: 'test', loadChildren: () => import('@test').then(m => m.TestModule) },
{ path: '**', component: PageNotFoundComponent }
],
'createRoutes': [
{ path: 'account', loadChildren: () => import('@create').then(m => m.CreateModule) },
{ path: 'login-test', loadChildren: () => import('@logintest').then(m => m.LoginTestModule) },
{ path: '**', component: PageNotFoundComponent }
]
};
在 AppComponent.ts 中
resetRouter () {
const baseHref = this.platformLocation.getBaseHrefFromDOM();
if (baseHref.match('/home/')) {
this.router.resetConfig(routes.homeRoutes);
}
if (baseHref.match('/create/')) {
this.router.resetConfig(routes.createRoutes);
}
}
在路由模块中
const routes = [
{ path: 'home/account', loadChildren: () => import('@home').then(m => m.HomeModule) },
{ path: 'create/account', loadChildren: () => import('@home').then(m => m.HomeModule) },
{ path: 'test', loadChildren: () => import('@test').then(m => m.TestModule) },
{ path: 'login-test', loadChildren: () => import('@logintest').then(m => m.LoginTestModule) },
{ path: 'page-not-found', component: PageNotFoundComponent }
];
所以现在的问题是,
我的应用现在只能在 http://localhost:3000/home/home/account 中访问,这是意料之中的。
另外,如果访问 create 路由 f.e http://localhost:3000/home/test 有效,但实际期望是抛出错误页面。
请帮我配置这些路由。
【问题讨论】:
-
为什么...为什么要根据路径的第一部分将路由器分成 2 个路由器来尝试路由?这是解决问题的一种非常糟糕和笨拙的方法。只需将
baseHref保留在/并创建一条同时捕获home和create的路由。在该组件中,您可以检查ActivatedRoute并确定您是在家还是在创建,并在 HTML 模板中显示不同的内容/组件... -
这是因为我的应用部署在
http://localhost:3000/MyAPP,root不属于angular -
好的,所以你的
baseHref = '/MyAPP'变成了http://localhost:3000/MyAPP/home/account和http://localhost:3000/MyAPP/create/account。这并不重要
标签: javascript angular typescript routes