จะส่งพารามิเตอร์ไปยัง routerLink ที่อยู่ภายใน URL ได้อย่างไร


208

ฉันรู้ว่าฉันสามารถส่งพารามิเตอร์ไปที่routerLinkเส้นทางเช่น

/user/:id

โดยการเขียน

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

แต่สิ่งที่เกี่ยวกับเส้นทางเช่นนี้:

/user/:id/details

มีวิธีตั้งค่าพารามิเตอร์นี้หรือฉันควรพิจารณารูปแบบ URL ที่แตกต่างกันหรือไม่

คำตอบ:


347

ในตัวอย่างเฉพาะของคุณคุณจะทำสิ่งต่อไปนี้routerLink:

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

ในการทำเช่นนั้นในคอนโทรลเลอร์คุณสามารถฉีดRouterและใช้:

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

ข้อมูลเพิ่มเติมในส่วนการเชื่อมโยงพารามิเตอร์เอกสารเชิงมุมของการกำหนดเส้นทาง & การนำทาง


คุณสามารถให้เชื่อมโยงใด ๆ ที่ฉันสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ..
refactor

4
@CleanCrispCode คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในเอกสารเชิงมุมที่แนะนำเราเตอร์: angular.io/docs/ts/latest/guide/...
วอย Kwiatek

แล้ว<button mat-button routerLink="...">View user</button>ไวยากรณ์ล่ะ
Stephane

33

อาจจะเป็นคำตอบที่ล่าช้า แต่ถ้าคุณต้องการสำรวจหน้าอื่นด้วย param คุณสามารถทำได้

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

นอกจากนี้คุณไม่ควรลืมเกี่ยวกับการกำหนดเส้นทางเช่น

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

11

ก่อนกำหนดในตาราง:

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

ตอนนี้ในรหัสสคริปต์ประเภท:

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

รับ params ในองค์ประกอบอื่น

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

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

0

มีหลายวิธีในการบรรลุเป้าหมายนี้

  • ผ่านคำสั่ง [routerLink]
  • วิธีการนำทาง (Array) ของคลาสเราเตอร์
  • วิธีนำทางByUrl (สตริง) ซึ่งใช้สตริงและส่งกลับสัญญา

แอ็ตทริบิวต์ routerLink ต้องการให้คุณนำเข้า routingModule ไปยังโมดูลคุณลักษณะในกรณีที่คุณโหลดโมดูลฟีดหรือเพียงแค่อิมพอร์ต app-routing-module หากไม่ได้เพิ่มเข้าไปในอาร์เรย์การนำเข้า AppModule โดยอัตโนมัติ

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • นำทาง
// 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})
  • NavigateByUrl
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.