2016-06-30 26 views
25

Tôi đang cố điều hướng đến tuyến đường trong Góc 2 với kết hợp các thông số tuyến đường và truy vấn.Bộ định tuyến góc 2.navigate

Dưới đây là một lộ trình ví dụ trong đó các tuyến đường là phần cuối cùng của con đường:

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

Cố gắng liên kết sử dụng các mảng như vậy:

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

tôi không nhận được bất kỳ lỗi nào và từ những gì tôi có thể hiểu điều này sẽ hiệu quả.

Các kiễu góc 2 tài liệu (tại thời điểm này) có sau đây là một ví dụ:

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

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

bất cứ ai có thể nhìn thấy nơi tôi sẽ sai? Tôi đang ở trên bộ định tuyến 3.

Trả lời

46

Nếu đoạn đầu tiên không bắt đầu bằng / thì đó là tuyến đường tương đối. router.navigate cần một tham số relativeTo để điều hướng tương đối

Hoặc bạn thực hiện các tuyến đường tuyệt đối:

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

hoặc bạn vượt qua relativeTo

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

cũng Xem

+1

biết chủ đề này là cũ - nhưng một vài câu hỏi nhanh chóng cho sự hiểu biết của tôi: 1. Trong trường hợp thứ 2 trên shouldn' nó là 'this.router.navigate (** ['foo ** - nội dung', 'nội dung thanh', ....' (không có/ở đầu đoạn đầu tiên, vì nó là tương đối) 2. Ngoài this.currentActivatedRoute các giá trị có thể khác cho relativeTo là gì? – Vikas

+0

Nếu bạn muốn nó là tương đối, sau đó bỏ qua '/' hàng đầu, tôi không có ý định đó. Bất kỳ tuyến đường nào bạn muốn đường dẫn có liên quan đến. –

+1

Cảm ơn - nhưng trong thư trả lời của bạn, bạn đã đề cập rằng nếu phân khúc đầu tiên bắt đầu bằng /, thì đó là điều hướng tuyệt đối. Vì vậy, tại sao các relativeTo được yêu cầu? – 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']; 
 
     }); 
 
}

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

Các vấn đề liên quan