Сопоставитель угловой маршрутизации не вызывает страницу дополнительных сведений

#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 .