Você pode navegar para a rota atual com novos parâmetros de consulta, que não irão recarregar sua página, mas irão atualizar os parâmetros de consulta.
Algo como (no componente):
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
});
}
Observe que, embora não recarregue a página, ele enviará uma nova entrada ao histórico do navegador. Se quiser substituí-lo no histórico em vez de adicionar um novo valor lá, você pode usar { queryParams: queryParams, replaceUrl: true }
.
EDIT: Como já foi apontado nos comentários, []
e a relativeTo
propriedade estava faltando no meu exemplo original, então poderia ter mudado a rota também, não apenas parâmetros de consulta. O this.router.navigate
uso adequado será neste caso:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
Definir o novo valor do parâmetro como null
removerá o parâmetro do URL.
[]
vez de['.']
fazer funcionar