Относительный путь Angular RouterLink не работает в компоненте с пустым путем

У меня есть мой дочерний путь, определенный как

{ path: '', component: CartMainComponent, pathMatch: 'full' }

Весь путь выглядит так, когда я нахожусь в CartMainComponent http://mystype.com/brand/MyBrandId/cart В корзине я хочу перейти к /brand/MyBrandId/cart, поэтому я использовал routerLink="../cart" в html. Но это дало мне следующую ошибку

Ошибка: Не удается сопоставить ни одного маршрута. Сегмент URL: «бренд/Rotiform/корзина/каталог»

Только когда я делаю routerLink="../../../cart", это работает

Это нелогично, даже если пустой путь рассматривается как дополнительный уровень относительного пути. Тем не менее я ожидаю использовать «..» только дважды, но не три раза

Можно ли это исправить, чтобы я мог относительно пройти маршрут, не думая, есть ли пустые пути?


person simply good    schedule 16.04.2020    source источник


Ответы (1)


Да, команда Angular добавила исправление для этой проблемы, но вам нужно включить его вручную, добавив

relativeLinkResolution: 'corrected' в конфигурации корневого маршрутизатора. т.е.

@NgModule({ imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'corrected'})], exports: [RouterModule] })

Но, пожалуйста, обратите внимание, что это «исправление» не решило всю ошибку. Вот почему он не включен по умолчанию. Этот PR описывает проблему: https://github.com/angular/angular/issues/26983 Пожалуйста, имейте это в виду.

RelativeLinkResolution также обсуждается в этой ветке github https://github.com/angular/angular/issues/13011

person simply good    schedule 16.04.2020