วิธีการส่งผ่านพารามิเตอร์การสืบค้นด้วย routerLink


161

prop=xxxฉันต้องการที่จะผ่านพารามิเตอร์แบบสอบถาม

มันใช้งานไม่ได้

<a [routerLink]="['/somepath', {queryParams: {prop: 'xxx'}}]>Somewhere</a>

ไวยากรณ์ที่คุณต้องการใช้สำหรับพารามิเตอร์เมทริกซ์และนี่คือรูปแบบ<a [routerLink]="['/somepath', { foo: 'foo' }]">Somewhere</a>ซึ่งจะให้พารามิเตอร์เมทริกซ์ URL (เซมิโคลอน; แทน? และ & ตัวคั่น) และคุณสามารถเข้าถึงได้โดย ActivatedRoute.params แทน activRoute.queryParams ข้อมูลเพิ่มเติมที่นี่stackoverflow.com/questions/35688084/… และที่นี่stackoverflow.com/questions/2048121//
William Ardila

1
พารามิเตอร์การค้นหาและพารามิเตอร์เมทริกซ์เหมือนกัน ความแตกต่างเพียงอย่างเดียวคือเมื่อเพิ่มเข้าไปในส่วนของรูทพวกเขาจะต่อเนื่องกันเป็นพารามิเตอร์ข้อความค้นหาเมื่อพวกเขาถูกเพิ่มไปยังส่วนย่อยที่พวกเขาจะถูกต่อเนื่องเป็นพารามิเตอร์เมทริกซ์
GünterZöchbauer

มีความแตกต่างเพิ่มเติมตรวจสอบweb.archive.org/web/20130126100355/http://brettdargan.com/blog/นี้นอกจากนี้คุณยังสามารถตรวจสอบไวยากรณ์ลิงค์พารามิเตอร์ในเอกสารเชิงมุมที่angular.io/docs/ts/latest/ คู่มือ / …
William Ardila

คำตอบ:


326

queryParams

queryParamsเป็นอีกหนึ่งอินพุตrouterLinkที่สามารถส่งผ่านได้

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}">Somewhere</a>

fragment

<a [routerLink]="['../']" [queryParams]="{prop: 'xxx'}" [fragment]="yyy">Somewhere</a>

routerLinkActiveOptions

ในการรับเส้นทางคลาสที่แอ็คทีฟตั้งค่าบนเส้นทางพาเรนต์:

[routerLinkActiveOptions]="{ exact: false }"

เพื่อส่งผ่านพารามิเตอร์การสืบค้นที่จะthis.router.navigate(...)ใช้

let navigationExtras: NavigationExtras = {
  queryParams: { 'session_id': sessionId },
  fragment: 'anchor'
};

// Navigate to the login page with extras
this.router.navigate(['/login'], navigationExtras);

ดูเพิ่มเติมที่https://angular.io/guide/router#query-parameters-and-fragments


โปรแกรมนี้ทำงานอย่างไรโดยทางโปรแกรม ฉันลองใช้ this.router.navigate (['/ resetPassword', {queryParams: {ชื่อผู้ใช้: loginName}}]); แต่ผลลัพธ์คือlocalhost: 8100 / resetPassword; queryParams =% 5Bobject% 20Object% 5D
rickul

2
ฉันปรับปรุงคำตอบของฉัน ดูลิงก์ที่ฉันเพิ่มด้วย มันแสดงให้เห็นตัวอย่างเต็มรูปแบบ
GünterZöchbauer

หมายเหตุคู่: รหัสของ rickul ควรเป็น[ '/resetPassword' ], { queryParams: { username: loginName }})ที่]มาก่อนความพิเศษ นอกจากนี้อย่าลืมว่าพารามิเตอร์การค้นหาเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
Simon_Weaver

2
อย่าลืมสมัครแบบสอบถาม Params บนเป้าหมาย: stackoverflow.com/a/39146396/2726844
Vince I

1
หรือหากคุณกำลังใช้เส้นทางrunGuardsAndResolvers: 'always'จะทำการโหลดเส้นทาง ขนาดกลาง.com/engineering
Adam
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.