Vous pouvez accéder à l'itinéraire actuel avec de nouveaux paramètres de requête, qui ne rechargeront pas votre page, mais mettront à jour les paramètres de requête.
Quelque chose comme (dans le composant):
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
});
}
Notez que même s'il ne rechargera pas la page, il poussera une nouvelle entrée dans l'historique du navigateur. Si vous souhaitez le remplacer dans l'historique au lieu d'y ajouter une nouvelle valeur, vous pouvez utiliser { queryParams: queryParams, replaceUrl: true }
.
EDIT: Comme déjà souligné dans les commentaires, []
et la relativeTo
propriété manquait dans mon exemple d'origine, donc cela aurait pu également changer l'itinéraire, pas seulement les paramètres de requête. La bonne this.router.navigate
utilisation sera dans ce cas:
this.router.navigate(
[],
{
relativeTo: this.activatedRoute,
queryParams: { myParam: 'myNewValue' },
queryParamsHandling: 'merge'
});
Définir la nouvelle valeur de paramètre sur null
supprimera le paramètre de l'URL.
[]
au lieu de['.']
pour que cela fonctionne