J'ai un problème avec le routage vers une route avec des paramètres de requête, j'ai une fonction comme si
goToLink(link) {
this.router.navigate([`${link.split('?')[0]}`, { queryParams: this.sortParams(link)}]);
}
et cette fonction
sortParams(link) {
let queryParams = url.split('?')[1];
let params = queryParams.split('&');
let pair = null;
let data = {};
params.forEach((d) => {
pair = d.split('=');
data[`${pair[0]}`] = pair[1];
});
return data;
}
ok donc fondamentalement ce qui se passe, j'ai une fonction appelée goToLink()
et qui prend dans une URL et l'URL qui est passé est une chaîne avec des paramètres de requête comme so ..
https://website.com/page?id=37&username=jimmy
ce qui précède n’est qu’un exemple; ce n’est pas ce à quoi il ressemble en réalité mais c’est une chaîne de liens avec des paramètres de requête; c’est pourquoi je supprime les paramètres de la chaîne et les stocke dans un objet de données dans la fonction sortParams()
afin quand je passe la chaîne ci-dessus, je reçois un objet qui ressemble à ceci
{id: 37, username: 'jimmy'}
maintenant, c’est ce que je passe dans la section queryParams:
du routeur.navigate,
la fonction devrait ressembler à ceci quand l'objet est retourné
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
donc je route avec succès vers la route souhaitée, mais les paramètres de requête ressemblent à ceci ..
/page;queryParams=%5Bobject%20Object%5D
Est-ce que je fais quelque chose de mal ici??
Toute aide serait appréciée!
EDIT
Si je change juste la fonction à cette
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
Je reçois la même URL /page;queryParams=%5Bobject%20Object%5D
Peut-être que vous aviez placé la parenthèse supposée pour le 1er param mais que vous l’aviez encapsulée sur toute la ligne de route
Votre code:
// This is the end of your route statement: '}}]);' which the close bracket is included
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
Mise à jour de l'itinéraire:
placez la parenthèse ] dans le premier paramètre uniquement, essayez de ne pas la placer sur la dernière partie de l'instruction route.
// Update end line: '}});'
this.router.navigate([`${link.split('?')[0]}`], { queryParams: {id: 37, username: 'jimmy'}});