Làm cách nào để truyền tham số cho routerLink ở đâu đó bên trong URL?


208

Tôi biết tôi có thể truyền tham số routerLinkcho các tuyến đường như

/user/:id

bằng cách viết

[routerLink]="['/user', user.id]"

Nhưng những gì về các tuyến đường như thế này:

/user/:id/details

Có cách nào để đặt tham số này hay tôi nên xem xét một lược đồ URL khác?

Câu trả lời:


347

Trong ví dụ cụ thể của bạn, bạn sẽ làm như sau routerLink:

[routerLink]="['user', user.id, 'details']"

Để làm như vậy trong bộ điều khiển, bạn có thể tiêm Routervà sử dụng:

router.navigate(['user', user.id, 'details']);

Thông tin thêm trong phần Các tham số liên kết tài liệu Angular của Routing & Navigation


bạn có thể cung cấp bất kỳ liên kết nào mà tôi có thể tìm thêm thông tin về điều này không ..
— refactor

4
@CleanCrispCode Bạn có thể đọc thêm về nó trong các tài liệu Angular tại hướng dẫn bộ định tuyến: angular.io/docs/ts/latest/guide/iêu
— Wojciech Kwiatek

Còn <button mat-button routerLink="...">View user</button>cú pháp thì sao?
— Stephane

33

Có thể đó là câu trả lời thực sự muộn nhưng nếu bạn muốn điều hướng một trang khác với param bạn có thể,

[routerLink]="['/user', user.id, 'details']"

Ngoài ra, bạn không nên quên cấu hình định tuyến như,

 [path: 'user/:id/details', component:userComponent, pathMatch: 'full']

11

Cấu hình đầu tiên trong bảng:

const routes: Routes = [  
{
  path: 'class/:id/enrollment/:guid',
  component: ClassEnrollmentComponent
 }
];

bây giờ trong loại mã script:

this.router.navigate([`class/${classId}/enrollment/${4545455}`]);

nhận thông số trong thành phần khác

 this.activatedRoute.params.subscribe(params => {
  let id = params['id'];
  let guid = params['guid'];

  console.log(`${id},${guid}`);
  });

0

Có nhiều cách để đạt được điều này.

  • Thông qua chỉ thị [routerLink]
  • Phương thức điều hướng (Array) của lớp Router
  • Phương thức navigationByUrl (chuỗi) lấy một chuỗi và trả về một lời hứa

Thuộc tính routerLink yêu cầu bạn nhập định tuyếnModule vào mô-đun tính năng trong trường hợp bạn lười tải mô-đun tính năng hoặc chỉ nhập mô-đun định tuyến ứng dụng nếu nó không được thêm tự động vào mảng nhập AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Điều hướng
// Inject Router into your component
// Inject ActivatedRoute into your component. This will allow the route to be done related to the current url
this._router.navigate(['user',user.id], {relativeTo: this._activatedRoute})
  • Điều hướngByUrl
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.