2016-06-30 2 views
25

경로 및 쿼리 매개 변수를 혼합하여 Angular 2로 경로를 탐색하려고합니다.각도 2 router.navigate

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

배열과 같이 사용하여 연결하려고 :

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

내가 오류를받지 못했습니다 여기

는 경로가 경로의 마지막 부분 인 예 경로입니다 내가 이해할 수있는 것으로부터 이것은 효과가 있어야한다.

(순간) 각이 문서는 예를 들어 다음과 같은 한 : 내가 잘못거야 어디

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

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

사람이 볼 수 있을까요? 라우터 3에 있습니다.

답변

46

첫 번째 세그먼트가 /으로 시작하지 않으면 상대 경로입니다.

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}) 

+1

이 스레드가 오래 알고 있지만 내 이해에 대한 간단한 질문 몇 : shouldn 위의 2 경우 1. ''this.router.navigate (** ['foo ** - content ','bar-contents ', ....' (첫 번째 세그먼트의 시작 부분에 /가 없으므로 상대적이기 때문에) 2. this.currentActivatedRoute 외에도 relativeTo에 대해 가능한 다른 값은 무엇입니까? – Vikas

+0

당신이 친척이되기를 원한다면, 선행하는'/'을 생략하십시오, 나는 그것을 의도하지 않았습니다. 경로를 기준으로하는 모든 경로. –

+1

고마워요.하지만 회신에서 첫 번째 세그먼트가 /로 시작할 경우 절대 탐색이라고 언급했습니다. 그렇다면 상대방은 왜 필요합니까? – Vikas

5

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

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