Supprimer un paramètre de queryParams angulaire 2
Je navigue à une certaine page de mon application avec un paramètre de requête.
Après je reçois le paramètre de l'URL que je veux le supprimer, idéalement, j'aimerais avoir ceci:
let userToken: string;
this.sub = this.router
.routerState
.queryParams
.subscribe(params => {
userToken = params['token'];
params['token'].remove();
});
Mais, évidemment, la fonction de suppression n'existe pas. Faut-il une alternative?
supprimer, d'où, la chaîne de requête? ou de
depuis les paramètres de l'objet de sorte qu'il ne sera pas affiché dans l'URL plus.
Changer de format illisible est mieux que de le supprimer.
en cours d'exécution dans la même question, besoin d'enlever la queryparams alors quand je voie vers une autre page, le param est pas une partie de l'url. avez-vous trouvé une solution?
Pas encore, j'ai modifier l'url en cours avec fenêtre.emplacement mais quand je voie vers une autre page le paramètre est de retour.
params
objet seulement?depuis les paramètres de l'objet de sorte qu'il ne sera pas affiché dans l'URL plus.
Changer de format illisible est mieux que de le supprimer.
en cours d'exécution dans la même question, besoin d'enlever la queryparams alors quand je voie vers une autre page, le param est pas une partie de l'url. avez-vous trouvé une solution?
Pas encore, j'ai modifier l'url en cours avec fenêtre.emplacement mais quand je voie vers une autre page le paramètre est de retour.
OriginalL'auteur stijn.aerts | 2016-07-04
Vous devez vous connecter pour publier un commentaire.
Juste au cas où les gens à trouver ce fil (comme je l'ai fait). J'ai le scénario que je reçois un JWT jeton dans une chaîne de requête (/login?jwt=token). J'avais besoin de récupérer ce jeton (et de magasin, etc), mais alors nécessaires pour veiller à ce qu'il s'est retiré en toute sécurité à partir de l'URL. Le rechargement de la connexion de l'itinéraire (par l'utilisation de ce.routeur.naviguer(['login']) fonctionne en principe, cependant, l'utilisateur peut alors utiliser le bouton précédent du navigateur, essentiellement de relire le jeton de connexion.
J'ai résolu ce problème en n'utilisant pas la navigation mais par DI pratiquent la "Localisation" de service (à partir de @angulaire/commune). Ce service a un "replaceState " méthode", qui supprime complètement le jeton de l'histoire aussi bien qu'à partir de l'URL
Espère que ça aide quelqu'un.
Je me demandais, quel est le sens de "DI require"?
La dépendance Injecter un require 🙂 - l'ajouter dans le constructeur de votre composant.
ne fonctionne pas dans mon projet, je suis à l'aide angulaire routeur et ont acheminé chemin avec comme param:
http://dev.somedomain.sk/parkzones?city=Trnava
après la suppression de paramcity
vialocation.replaceState('city')
j'obtiens le résultathttp://dev.somedomain.sk/city
ne pas retirer le queryParam mais il remplace l'actuelle route avec la route. Dans votre cas, vous devez utiliser
location.replaceState('parkzones')
OriginalL'auteur MikeOne
Vous pouvez affecter
null
à un queryParam :this.router.navigate([], {queryParams: {page: null}, queryParamsHandling: 'merge'});
n'a pas fonctionné pour moi.. :/
J'ai utilisé quelque chose comme cela
this.router.navigate(['/home'], {queryParams: {verify_email_token: null}, queryParamsHandling: 'merge'});
Mais il ne marche pasOriginalL'auteur Romain Bohdanowicz
Mise à JOUR Il n'est pas nécessaire d'ajouter queryParams dans rc6 plus.
Ne sais pas si c'est le cas:
Après le routage d'un composant à une requête params, toutes les autres url de ce composant contient la requête params automatiquement. Quand vous naviguez vers une autre url de la requête params séjour.
Si oui, une solution pourrait être à la requête params sur la balise html
Sinon, je suis également intéressé par la réponse 😛
Cela ne devrait PAS être le comportement par défaut, mais pour le moment (RC4) il me semble que c'est.... Je trouve ça atroce.
OriginalL'auteur Dansen
Impératif de méthode, mais plus propre:
this.router.navigate(['.'], { relativeTo: this.route, queryParams: {} });
OriginalL'auteur Paul Melero
J'utilise le routeur méthode
navigateByUrl
.Suppléant doc: Angulaire de la documentation
Garder à l'esprit que le chemin d'accès que vous nourrissez elle est considérée comme absolue. Vous ne pouvez pas utiliser relatif composant de routage avec cette méthode.
Mon utilisation est que j'ai un composant qui sert externe de la fonction de rappel pour l'auth événements, tels que la réinitialisation du mot de passe et l'email de validation. Une fois l'opération terminée, la navigation, l'action doit se produire se produit à travers
router.navigateByUrl(path)
J'ai repris les moins voter, puisque de retour dans la journée routeur.navigateByUrl() a été la seule option pour supprimer queryParams. C'était un bug dans Angular2 RC4 et plus. Cependant, cette méthode est aujourd'hui obsolète pour le retrait de la requête params, comme vous pouvez maintenant modifier également à l'aide du routeur.naviguer().
OriginalL'auteur Matthew Lynam
HTML5 comprend la
history.pushState
API, qui permet d'ajouter des entrées de l'historique et de modifier l'URL affichée dans le navigateur. (La manipulation de l'historique du navigateur)window.history.pushState('', 'title', '/expected-url');
Vous pouvez utiliser cette ligne de code dans votre Angular2 application. Ce sera juste changer l'URL pas de l'état de l'application. (les résultats de la requête param supprimer à partir de l'url)
OriginalL'auteur Syed Adeel Ali Rizvi
J'étais à la recherche de la réponse de ce genre quand j'ai voulu supprimer access_token paramètre à partir de l'url. Si vous voulez simplement supprimer un paramètre et de conserver les autres paramètres.
Le setTimeout est nécessaire pour une raison quelconque, le navigateByUrl n'a pas fonctionner sans elle.
OriginalL'auteur AJT