#angular #typescript
Вопрос:
Я пытаюсь использовать одну и ту же страницу для разных категорий невигации ссылок на маршрутизацию, в приложении-маршрутизация, если я использую обычный путь: продукт, когда я нажимаю на ссылку «продукты» и «подробности», работает хорошо, но если я попытаюсь использовать сопоставитель, страница сведений не открывается (для теста вы можете удалить комментарий к пути:продукт и добавить сопоставитель и посмотреть, как это работает), может кто-нибудь помочь мне решить эту проблему? Спасибо
Ответ №1:
Во-первых, вы должны понять, как matcher
это работает. Документация об этом не очень хороша, поэтому я попытаюсь объяснить. Когда вы передадите UrlSegment[]
matcher
кому , он попытается сопоставить URL-адрес, а затем передаст оставшуюся часть URL-адреса дочернему маршрутизатору.
Чтобы он работал правильно, вы должны указать, какая часть URL-адреса была использована родительским маршрутизатором, а оставшаяся часть будет передана дочернему маршрутизатору. Если вы этого не укажете, предполагается, что родительский маршрутизатор использовал весь URL-адрес, и он передаст пустую строку дочернему маршрутизатору.
В вашем примере вы хотите перейти к:
products/product-details/1
Поскольку вы не указали, что ваш родительский маршрутизатор использовал только products
часть URL-адреса , предполагается, что ваш родительский маршрутизатор использовал весь URL products/product-details/1
-адрес, и только пустая строка будет передана дочернему маршрутизатору.
Итак, чтобы решить эту проблему, вы должны указать, что ваш родительский маршрутизатор использовал только products
часть URL-адреса, а оставшаяся часть будет передана дочернему маршрутизатору.
Я обновил ваш пример рабочего кода: https://stackblitz.com/edit/angular-routing-match-vhqdrf?file=src/app/products/products-routing.module.ts
ПРИМЕЧАНИЕ: Я удалил часть о computers
и electronics
, потому что вы должны создать matchers
для них новую, так как их нет ProductsModule
.