Angular RouterLink 相对路径在具有空路径的组件中不起作用
Angular RouterLink relative path does not work in component having empty path
我的子路径定义为
{ path: '', component: CartMainComponent, pathMatch: 'full' }
当我在 CartMainComponent 中时,整个路径看起来像这样
http://mystype.com/brand/MyBrandId/cart
在购物车中,我想导航到 /brand/MyBrandId/cart
,所以我在 html 中使用了 routerLink="../cart"
。但这给了我下一个错误
Error: Cannot match any routes. URL Segment: 'brand/Rotiform/cart/catalog'
只有当我这样做时 routerLink="../../../cart"
才有效
这是不合逻辑的,即使空路径被视为一个附加级别的相对路径。我仍然希望使用 '..' 两次而不是三次
是否可以修复它,这样我就可以相对地通过路由而不用考虑是否有任何空路径?
是的,Angular 团队针对此问题添加了修复程序,但您需要通过添加
手动启用它
relativeLinkResolution: 'corrected'
在根路由器配置中。 IE。
@NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'corrected'})],
exports: [RouterModule]
})
但是请注意,这个 'bugfix' 并没有解决整个错误。这就是默认情况下不启用它的原因。
此 PR 描述了问题:https://github.com/angular/angular/issues/26983
请记住。
RelativeLinkResolution 也在这个 github 线程中讨论
https://github.com/angular/angular/issues/13011
我的子路径定义为
{ path: '', component: CartMainComponent, pathMatch: 'full' }
当我在 CartMainComponent 中时,整个路径看起来像这样
http://mystype.com/brand/MyBrandId/cart
在购物车中,我想导航到 /brand/MyBrandId/cart
,所以我在 html 中使用了 routerLink="../cart"
。但这给了我下一个错误
Error: Cannot match any routes. URL Segment: 'brand/Rotiform/cart/catalog'
只有当我这样做时 routerLink="../../../cart"
才有效
这是不合逻辑的,即使空路径被视为一个附加级别的相对路径。我仍然希望使用 '..' 两次而不是三次
是否可以修复它,这样我就可以相对地通过路由而不用考虑是否有任何空路径?
是的,Angular 团队针对此问题添加了修复程序,但您需要通过添加
手动启用它relativeLinkResolution: 'corrected'
在根路由器配置中。 IE。
@NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'corrected'})],
exports: [RouterModule]
})
但是请注意,这个 'bugfix' 并没有解决整个错误。这就是默认情况下不启用它的原因。 此 PR 描述了问题:https://github.com/angular/angular/issues/26983 请记住。
RelativeLinkResolution 也在这个 github 线程中讨论 https://github.com/angular/angular/issues/13011