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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.