web-dev-qa-db-fra.com

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ù l'itinéraire représente la dernière partie du chemin:

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

Tenter de lier 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 peux comprendre, cela devrait fonctionner.

Les documents Angular 2 (pour le moment) ont les exemples suivants:

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

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

Quelqu'un peut-il voir où je vais mal? Je suis sur le routeur 3.

44
SpaceBeers

Si le premier segment ne commence pas par /, il s'agit d'un itinéraire relatif. router.navigate nécessite un paramètre relativeTo pour la navigation relative

Soit vous faites la route absolue:

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

ou tu passes relativeTo

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

Voir également

81
Günter Zöchbauer
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

10
yala ramesh