Дополнительно
Угловой: Как обновить queryParams без изменения маршрута
Я пытаюсь обновить (добавить, удалить) queryParams из компонент. На AngularJS, это становится возможным благодаря :
$location.search('f', 'filters[]'); // setter
$location.search()['filters[]']; // getter
У меня есть приложение со списком того, что пользователь может фильтровать, порядок и т. д. И я хотел бы установить в queryParams URL-адреса всех фильтров активации, так что он может копировать/вставить URL-адрес или поделиться им с кем-то еще.
Однако, я не'т хочу, чтобы мои страницы, чтобы быть перегружены каждый раз, когда выбранный фильтр.
Это выполнимо с новым роутером?
89
7
Вы можете перейти к текущему маршруту с новыми параметрами запроса, который не будет перезагружать вашу страницу, но будет обновлять параметры запроса.
Что-то вроде (в компоненте):
в
Обратите внимание, что он выиграл'т перезагрузите страницу, он будет толкать новую запись в браузере'история. Если вы хотите, чтобы заменить его в истории вместо того, чтобы добавлять туда новое значение, вы могли бы использовать
{ queryParams: queryParams, replaceUrl: правда }
.Редактировать: Как уже отмечалось в комментариях,
[]
иrelativeTo
имущество было в моем исходном примере отсутствует, поэтому он мог бы также изменил маршрут, а не только параметры запроса. Правильное это.маршрутизатор.использование навигации будет в этом случае:Установка нового значения параметра
нуль
будет удалить параметр из URL-адреса.@Радослав Roszkowiak'ы ответ почти правильно за исключением того, что
relativeTo: это.маршрут
требуется как ниже:В угловой 5 Вы можете легко получить и модифицировать копия urlTree путем анализа текущего URL. Это будет включать параметры запросов и фрагментов.
В "правильный путь", чтобы изменить параметр запроса, вероятно, с createUrlTree, как показано ниже, который создает новый UrlTree от текущей, позволяя нам изменять его, используя NavigationExtras.
Для того, чтобы удалить параметр запроса, таким образом, вы можете установить его, чтобы
не определено
илиnull
.Попробовать
будет работать для тех же маршруту, кроме одиночных кавычек.
Если вы хотите изменить параметры запроса без изменения маршрута. смотрите ниже пример может помочь вам: текущий маршрут является : поиск &ампер; цель маршрута(без перезагрузки страницы) : /поиск?запрос=любовь
обратите внимание : вы можете использовать этот.маршрутизатор.перейти( ['поиск'] Вместо этот.маршрутизатор.перейти( ['.']
Ответ с большинством проголосовать частично работал для меня. Url браузера осталась прежней, но мое
routerLinkActive
больше не работает после навигации.Мое решение было использовать lotation.перейти:
Я использовал HttpParams для построения строки запроса, так как я уже использовал его для отправки информации с помощью HttpClient. но вы можете просто построить его самостоятельно.
и это._router.URL-адрес.Сплит(" Ну?&и")[0], чтобы удалить все предыдущие строки запроса из текущего URL.
Во-первых, нам нужно импортировать модуль маршрутизатора с угловой маршрутизатор и объявить его псевдоним
это.маршрутизатор.перейти([], { queryParams: {параметр _id: на "Азбука" в день: "и 1" С, название: с "ТТС" и} });
Он будет обновлять параметры запроса в текущем я.электронная активированного маршрут
это.маршрутизатор.перейти(['/Азбука'], { queryParams: {параметр _id: на "Азбука" в день: "и 1" и, имя: на "ТТС" и} });
Он будет обновлять параметры запроса в "Азбуке" в путь вместе с тремя параметры запроса
Для извлечения параметров запроса:-