Możesz przejść do aktualnej trasy z nowymi parametrami zapytania, które nie przeładują strony, ale zaktualizują parametry zapytania.
Coś takiego (w komponencie):
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
});
}
Zwróć uwagę, że chociaż nie ładuje ponownie strony, wypchnie nowy wpis do historii przeglądarki. Jeśli chcesz zamienić go w historii zamiast dodawać tam nową wartość, możesz użyć { queryParams: queryParams, replaceUrl: true }
.
EDYCJA: Jak już wskazano w komentarzach, w moim oryginalnym przykładzie brakowało []
tej relativeTo
właściwości, więc mogła również zmienić trasę, a nie tylko parametry zapytania. Prawidłowe this.router.navigate
użycie będzie w tym przypadku:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
Ustawienie nowej wartości parametru na null
spowoduje usunięcie parametru z adresu URL.
[]
zamiast,['.']
aby to zadziałało