Вы можете перейти к текущему маршруту с новыми параметрами запроса, которые не будут перезагружать вашу страницу, но будут обновлять параметры запроса.
Что-то вроде (в компоненте):
constructor(private router: Router) { }
public myMethodChangingQueryParams() {
const queryParams: Params = { myParam: 'myNewValue' };
this.router.navigate(
[],
{
relativeTo: activatedRoute,
queryParams: queryParams,
queryParamsHandling: 'merge', // remove to replace all query params by provided
});
}
Обратите внимание, что хотя он не перезагружает страницу, он помещает новую запись в историю браузера. Если вы хотите заменить его в истории, а не добавлять туда новое значение, вы можете использовать { queryParams: queryParams, replaceUrl: true }
.
РЕДАКТИРОВАТЬ: как уже указывалось в комментариях, []
и relativeTo
в моем исходном примере свойство отсутствовало, поэтому оно могло также изменить маршрут, а не только параметры запроса. В this.router.navigate
этом случае правильным использованием будет:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
Установка нового значения параметра на null
удалит параметр из URL-адреса.
[]
вместо того,['.']
чтобы заставить его работать