20 votes

Comment conserver les paramètres de requête dans angular 5 sur toutes les routes par défaut ?

Le contexte :

L'utilisateur appelle l'url de l'application avec les paramètres et utilise mon application. Lors du passage d'une route à l'autre, les paramètres de l'url doivent rester visibles dans la barre d'adresse du navigateur.


Je dois conserver les paramètres de requête sur chaque route de mon application. Cela signifie que si j'ai l'url

www.example.com/app/test?id=326748798342&state=1

et appeler un lien avec [routerLink]="['/login']" Je dois obtenir cette url :

www.example.com/app/login?id=326748798342&state=1 .

Par défaut, je reçois la route de connexion sans les paramètres. J'ai trouvé une solution qui dit de définir queryParamsHandling='merge' . Mais c'est une très mauvaise solution car cela impliquerait de modifier tous les liens dans les modèles et tous les appels à navigate().

Existe-t-il un moyen plus propre de résoudre ce problème par défaut ? Par exemple, en définissant queryParamsHandling dans le tableau des routes de l'application ou autre chose ?

18voto

Maximus Points 1342

Actuellement, il n'y a aucun moyen de le définir globalement. Utilisation de queryParamsHandling semble être la seule option :

<a [routerLink]="['/login']" queryParamsHandling="preserve"></a>

Ou lorsque vous utilisez un routeur :

router.navigate('/login', { queryParamsHandling: "preserve" })

L'autre option possible pour queryParamsHandling es merge .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X