【发布时间】:2020-06-25 12:40:47
【问题描述】:
我正在开发一个遗留的 Angular 应用程序,并慢慢将其升级到 ng v9。 目前,我有这样一个路由配置,它只加载组件但想从现在开始转换到模块。
这就是我当前的路由文件的样子
const routes = [
{path: 'home', component: HomeComponent, canActivate:[routeGuard]},
{path: '', redirectTo: 'home', pathMatch: 'full'},
{path: 'settings', loadChildren: () => import('path_to_import').then(mod => mod.SettingsModule)}
]
并且从我试图导航的组件中简单地像这样 -
<span routerLink="settings"></span>
奇怪的是,当我点击页面上的设置时,它会将我重定向到“/settings/home”,这不是预期的行为。
但是当我将模块更改为像这样加载的组件时 -
const routes = [
{path: 'home', component: HomeComponent, canActivate:[routeGuard]},
{path: '', redirectTo: 'home', pathMatch: 'full'},
{path: 'settings', component: SettingsComponent}
]
效果很好。 所以我不确定为什么加载模块在这里有所作为。
任何帮助表示赞赏!
【问题讨论】:
-
您是否为“SettingsModule”定义了第二个路由模块?或其中定义的任何路线?
-
不,我们没有
-
如果远程“redirectTo”路径会发生什么?或者尝试将 settings-path 放在首位。
-
案例 1. 没有重定向 - 正如预期的那样,当我们点击根路径时,它的空白并且什么也没有发生,当我导航到 /settings 时,设置也没有加载,但是导航发生并且 /home 是未附加案例 2。当我将设置移至主页上方时,没有效果 - 仍然相同。 /settings 将附加 /home 导致 /settings/home
标签: angular angular-routing angular-routerlink