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 (на данный момент) приведено следующее:

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

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

Кто-нибудь может увидеть, где я иду не так? Я на роутере 3.

Ответы на вопрос(2)

Решение Вопроса

Если первый сегмент не начинается с/ это относительный маршрут.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})

Смотрите также

https://github.com/angular/angular.io/blob/c61d8195f3b63c3e03bf2a3c12ef2596796c741d/public/docs/_examples/router/ts/app/crisis-center/crisis-detail.component.1.ts#L108https://github.com/angular/angular/issues/9476
 Günter Zöchbauer17 дек. 2017 г., 08:46
Теперь я понимаю, что вы имеете в виду.relativeTo имеет смысл только с относительным маршрутом. Спасибо что подметил это.
 Vikas17 дек. 2017 г., 07:11
Спасибо, но в своем ответе вы упомянули, что если первый сегмент начинается с /, то это абсолютная навигация. Так зачем же относительное?
 Günter Zöchbauer16 дек. 2017 г., 19:46
Если вы хотите, чтобы оно было относительным, опустите ведущий/Я не собирался этого. Любой маршрут, который вы хотите, чтобы путь был относительно.
 Vikas16 дек. 2017 г., 19:22
Знайте, что эта ветка старая - но пара быстрых вопросов для моего понимания: 1. Во втором случае выше не должно бытьthis.router.navigate(**['foo**-content', 'bar-contents',....  (без / в начале первого сегмента, поскольку он является относительным) 2. Помимо this.currentActivationRoute, каковы другие возможные значения дляlativeTo?

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

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

Ваш ответ на вопрос