Angular Router не разрешает обязательные параметры - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю приложение с Angular и Angular router.Для перехода на одну из подстраниц мне нужен обязательный параметр в моем URL.Как это сделать, можно узнать из Angular Docs .Но почему-то этот метод не работает в моем проекте.

Версии:

  • @ angular / core: 7.2.6
  • @ angular / router: 7.2.6

Что я пытаюсь сделать

У меня есть список товаров на одной странице и подробная информация на второй странице.Маршруты страниц следующие:

  • Главная страница: /product-list
  • Страница сведений: /product-list/:id/info

Страница сведений относительнона главную страницу.

Я пытался перейти на страницу с помощью:

this.router.navigate(
  [':id/info', item.id], 
  { relativeTo: this.activatedRoute }
)

Но это приводит к ошибке от маршрутизатора Angular: Error: Cannot match any routes. URL Segment: ':id/info/03-BR'.

Я воспроизвел это поведениев stackblitz .


Вручную изменив: id

Я могу перейти к URL, если заменю :id самостоятельно, так что использование ['01-CE/info'] в качестве конфигурации перенаправляет на URL.Похоже, маршрутизатор не работает, как описано в документации, или я что-то не так делаю?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Просто изменить [':id/info', item.id], с ['item.id', 'info']

0 голосов
/ 22 февраля 2019

Массив не является заменой, это объединение.

Попробуйте

this.router.navigate(
  [item.id, 'info'], 
  { relativeTo: this.activatedRoute }
)
...