Я пытаюсь понять, как будет выглядеть базовая реализация загрузки routerLink с одновременным извлечением сохраненных параметров URL. Обычно я обрабатываю маршрутизацию в своем приложении через подписку на наблюдаемый объект, который выглядит так:
private onFilterProcessed(value: any, type: string, body, page)
{
if (type === 'zip')
{
this.processType('addresses.zip', value);
} if (type === 'location')
{
this.processType('addresses.city', value);
this.filtersService.getByCategory(
page, this.pagesize, this.body)
.subscribe(resRecordsData => {
let data = resRecordsData.data;
},
responseRecordsError => this.errorMsg = responseRecordsError);
}
Это позволяет мне передавать некоторые параметры фильтра в вызов api как часть тела запроса POST. Это вернет результаты, в которых перед возвратом данных передаются выбранные пользователем фильтры.
Все работает так, как ожидалось. Когда пользователь возвращается «назад» к ранее загруженному компоненту, его предыдущие выбранные фильтры будут переданы в вызов API, поэтому «страница» будет выглядеть так же, как когда они были на этой странице / компоненте в последний раз.
Однако у меня также есть несколько разделов в моем приложении, где я загружаю компоненты через routerLink. Изначально они выглядели так:
<a routerLink="/customer-history" routerLinkActive="selected">Customer History</a>
Дело в том, что теперь, когда у меня есть параметры фильтра в URL-адресе, это само по себе не сработает, потому что каждый раз, когда я нажимаю на эти конкретные ссылки, он стирает URL-адрес и повторно загружает его только с идентификатором страницы «customer- история "- потому что это то, что я сейчас говорю ему делать.
Если, например, фильтры использовались пользователем для фильтрации результатов по городу, URL-адрес выглядел бы следующим образом:
http://localhost:4200/customer-history;locations=true;locations_place=Seattle
Итак, проблема в том, что если бы они щелкнули мышью и затем вернулись на эту страницу / компонент по ссылке routerLink, вместо получения отфильтрованных данных для этой страницы он загрузит это:
http://localhost:4200/customer-history
Итак, мой вопрос о том, как передать эти параметры URL-адреса как часть routerLink. Я предполагаю, что это будет выглядеть примерно так, с квадратными скобками для привязки:
<a [routerLink]="['/customer-history', getParams()]" routerLinkActive="selected">Customer History</a>
Я не понимаю, как я получаю эти конкретные параметры URL (только параметры фильтра, а не имя компонента / страницы) и передаю их через привязку, подобную этой.
Я знаю, что Angular делает доступным активированныйRoute.snapshot, который я мог бы получить вот так, для передачи в getParams()
:
getParams()
{
return this.activatedRoute.snapshot;
}
Но это вернет полный URL-адрес, а не только часть параметров фильтра, что мне нужно. Итак, как мне получить нужную мне часть URL-адреса и передать ее сюда, чтобы добавить в «историю клиентов» в URL-адресе? Как бы это выглядело в базовой реализации?