J'utilise angular 5.0.3, j'aimerais démarrer mon application avec un tas de paramètres de requête tels que /app?param1=hallo¶m2=123
. Chaque conseil donné dans Comment obtenir les paramètres de la requête à partir de l'url en Angular 2 ? ne fonctionne pas pour moi.
Une idée pour faire fonctionner les paramètres de requête ?
private getQueryParameter(key: string): string {
const parameters = new URLSearchParams(window.location.search);
return parameters.get(key);
}
Cette fonction privée me permet de récupérer mes paramètres, mais je ne pense pas que ce soit la bonne méthode dans le nouvel environnement Angular.
[mise à jour :] Mon application principale ressemble à
@Component({...})
export class AppComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
// would like to get query parameters here...
// this.route...
}
}
0 votes
Utilisez-vous des routeurs ? D'où vient l'URL ?
0 votes
Oui, il y a une ActivatedRoute. J'ai mis à jour ma question pour montrer à quoi ressemble mon composant principal.
0 votes
Pouvez-vous également me montrer votre constante de route, où vous avez configuré toutes les routes ?
0 votes
Const appRoutes : Routes = [ {path : "un", composant : PageOneComponent}, {path : "", redirectTo : "/one", pathMatch : "full"}, {chemin : "**", redirectTo : "/one"} ] ; Ma constante Route. Je voudrais obtenir tous les paramètres dans l'application principale, les stocker dans un DTO, puis naviguer vers une autre page. La navigation sur la page fonctionne comme prévu, mais je n'obtiens les paramètres de la requête principale que par ma fonction 'getQueryParameter'. Je réalise dans votre question qu'il y a quelque chose que j'ai oublié. Dois-je marquer les noms de mes paramètres quelque part ?
0 votes
Oui, dans vos itinéraires, vous devez également définir les paramètres. Si vous consultez la documentation sur le routage sur angular.io, vous pouvez voir comment ils définissent les paramètres sur une route particulière. Quelque chose comme ceci {path : 'abc/:param1', component : componentClassName}
0 votes
Une fois que vous avez fait cela, tout ce qui se trouve dans l'url après votre domaine/abc, sera param1. Par exemple, localhost:4200/abc/100, dans ce cas 100 sera le param1, auquel vous pouvez accéder comme Dmitri a répondu ci-dessous
0 votes
Notez également que l'objet ActivatedRoute Params renvoie un observable, vous devez donc vous abonner pour accéder à la valeur du paramètre.
0 votes
J'ai une dizaine de paramètres dans un ordre différent. Je dois donc utiliser des paramètres de requête nommés. Et comment faire pour que le composant principal de l'application comprenne qu'il y a 10 paramètres ? Tous les exemples que j'ai lus et vus utilisent l'exemple simple 'abc/:param1'. J'ai besoin d'un '/?a="valeur"&b="autre valeur"... où le paramètre nommé 'a' sera la valeur, le paramètre 'b' sera 'autre valeur' et ainsi de suite.
0 votes
Cet article devrait résoudre votre problème. angular-2-training-book.rangle.io/handout/routing/