70 votes

Angular 2 router.navigate

J'essaie de naviguer vers une route dans Angular 2 avec un mélange de paramètres de route et de requête.

Voici un exemple d'itinéraire où la route est la dernière partie du chemin :

{ path: ':foo/:bar/:baz/page', component: AComponent }

J'essaie d'établir un lien en utilisant le tableau comme suit :

this.router.navigate(['foo-content', 'bar-contents', 'baz-content', 'page'], this.params.queryParams)

Je ne reçois aucune erreur et d'après ce que je comprends, cela devrait fonctionner.

La documentation d'Angular 2 (pour le moment) contient l'exemple suivant :

{ path: 'hero/:id', component: HeroDetailComponent }

['/hero', hero.id] // { 15 }

Quelqu'un peut-il voir où je fais fausse route ? Je suis sur le routeur 3.

112voto

Günter Zöchbauer Points 21340

Si le premier segment ne commence pas par / il s'agit d'une route relative. router.navigate a besoin d'un relativeTo paramètre pour la navigation relative

Soit vous rendez la route absolue :

this.router.navigate(['/foo-content', 'bar-contents', 'baz-content', 'page'], this.params.queryParams)

ou vous passez relativeTo

this.router.navigate(['../foo-content', 'bar-contents', 'baz-content', 'page'], {queryParams: this.params.queryParams, relativeTo: this.currentActivatedRoute})

Voir aussi

1 votes

Je sais que ce sujet est ancien, mais j'ai quelques questions rapides à poser pour comprendre : 1. Dans le deuxième cas ci-dessus, ne devrait-on pas plutôt dire this.router.navigate(**['foo**-content', 'bar-contents',.... (sans le / au début du premier segment, puisqu'il est relatif) 2. En dehors de this.currentActivatedRoute, quelles sont les autres valeurs possibles pour relativeTo ?

0 votes

Si vous voulez qu'il soit relatif, omettez le caractère de tête de la lettre / Je n'avais pas l'intention de le faire. N'importe quelle route sur laquelle vous voulez que le chemin soit relatif.

1 votes

Merci - mais dans votre réponse vous avez mentionné que si le premier segment commence par un /, alors il s'agit d'une navigation absolue. Alors pourquoi le paramètre relativeTo serait-il nécessaire ?

15voto

yala ramesh Points 721
import { ActivatedRoute } from '@angular/router';

export class ClassName {

  private router = ActivatedRoute;

    constructor(r: ActivatedRoute) {
        this.router =r;
    }

onSuccess() {
     this.router.navigate(['/user_invitation'],
         {queryParams: {email: loginEmail, code: userCode}});
}

}

Get this values:
---------------

ngOnInit() {
    this.route
        .queryParams
        .subscribe(params => {
            let code = params['code'];
            let userEmail = params['email'];
        });
}

Réf : https://angular.io/docs/ts/latest/api/router/index/NavigationExtras-interface.html

1voto

Aussi simple que

import { Router } de '@angular/router' ;

constructor( private router:Router) {}

return(){this.router.navigate(['/','input']);}

Ici, vous serez redirigé vers l'entrée de la route. Si vous souhaitez aller vers un chemin particulier avec une relative à un certain chemin alors.

return(){this.router.navigate(['/relative','input']);}

Ici sur return() est la méthode que nous allons déclencher sur un clic de bouton

<button (click)=return()>Accueil

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