Подтвердить что ты не робот

Angular 2 router.navigate

Я пытаюсь перейти к маршруту в Angular 2 с сочетанием параметров маршрута и запроса.

Вот пример маршрута, где маршрут является последней частью пути:

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

Попытка связать использование массива следующим образом:

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

Я не получаю никаких ошибок и из того, что я могу понять, это должно сработать.

В документе Angular 2 docs (на данный момент) есть следующие примеры:

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

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

Может ли кто-нибудь увидеть, где я ошибаюсь? Я на маршрутизаторе 3.

4b9b3361

Ответ 1

Если первый сегмент не начинается с /, это относительный маршрут. router.navigate нужен параметр relativeTo для относительной навигации

Либо вы делаете маршрут абсолютным:

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

или вы пройдете relativeTo

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

См. также

Ответ 2

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'];
        });
}