Angular 9 динамических c маршрутов - PullRequest
2 голосов
/ 04 мая 2020

Прежде всего, извините за мой английский sh Я не очень хорошо говорю, но я попытаюсь объяснить себя! Я создаю электронную коммерцию в Angular 9, и маршруты этой электронной коммерции работают следующим образом, каждый маршрут, который заканчивается .html, я направляю к компоненту, который я называю перенаправлением маршрутизатора, когда попадаю в этот компонент Я вызываю API электронной коммерции, передавая URL-адрес, о котором идет речь, а затем возвращается, если этот URL-адрес является категорией, продуктом, статьей ... с помощью этого ответа я перенаправляю на нужный компонент.

Проблема заключается в том, что в определенных ситуациях как и страница категорий, мне нужно оставить некоторые строки запроса, такие как pageIndex и orderby, в URL, но angular не показывает строки запроса, потому что когда я выполняю навигацию, я ставлю skipLocationChange: true, потому что я не могу изменить URL-адрес и мне нужно сохранить the queryString.

Мне это нужно только для случаев, когда пользователь хочет поделиться URL-адресом с кем-то еще.

Пример того, как я делаю метод навигации:

this.router.navigate(['categoria-listagem'], {
      skipLocationChange: true,
      queryParams: { page: 1, order: 'novidades' }
});

Пожалуйста, если кто-нибудь знает лучший способ сделать это перенаправление или знает, как сохранить строки запроса даже с помощью skipLocationChange, это сохранит меня !!

Заранее спасибо.

1 Ответ

1 голос
/ 04 мая 2020

Похоже, вы должны добавить queryParamsHandling как 'объединить' или 'сохранить' (в зависимости от ваших требований), например,

this.router.navigate(['categoria-listagem'], {
  skipLocationChange: true,
  queryParams: { page: 1, order: 'novidades' },  
  queryParamsHandling: "merge"
});

Это должно добавить ваши новые параметры запроса к любому уже в вашем URL.

Также вам может потребоваться удалить skipLocationChange, опять же, в зависимости от необходимой вам функциональности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...