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.
Ответы
Ответ 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'];
});
}