Cara melewati parameter kueri dengan routerLink


161

Saya ingin memberikan parameter kueri prop=xxx.

Ini tidak berhasil

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

Sintaks yang ingin Anda gunakan adalah untuk parameter matriks dan ini adalah formulir <a [routerLink]="['/somepath', { foo: 'foo' }]">Somewhere</a>, ini memberi Anda parameter url matriks (titik koma; bukan? Dan & pemisah) dan Anda dapat mengaksesnya dengan ActivatedRoute.params alih-alih diaktifkanRoute.queryParams Informasi lebih lanjut di sini stackoverflow.com/questions/35688084/… dan di sini stackoverflow.com/questions/2048121/…
— William Ardila

1
Parameter kueri dan parameter matriks sama. Satu-satunya perbedaan adalah ketika mereka ditambahkan ke segmen root, mereka diserialisasi sebagai parameter kueri, ketika mereka ditambahkan ke segmen anak, mereka diserialisasi sebagai parameter matriks.
— Günter Zöchbauer

Ada beberapa perbedaan lagi, periksa web.archive.org/web/20130126100355/http://brettdargan.com/blog/... Anda juga dapat memeriksa sintaks parameter tautan dalam dokumen sudut di sudut dokumen di sini angular.io/docs/ts/latest/ guide / ...
— William Ardila

Jawaban:


326

queryParams

queryParamsadalah input lain di routerLinkmana mereka dapat dilewati

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

fragment

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

routerLinkActiveOptions

Untuk juga mendapatkan rute kelas aktif yang ditetapkan pada rute induk:

[routerLinkActiveOptions]="{ exact: false }"

Untuk melewati parameter kueri untuk this.router.navigate(...)digunakan

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

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

Lihat juga https://angular.io/guide/router#query-parameters-and-fragments


Bagaimana ini akan bekerja secara terprogram? Saya mencoba dengan this.router.navigate (['/ resetPassword', {queryParams: {username: loginName}}])); Tetapi hasilnya adalah: localhost: 8100 / resetPassword; queryParams =% 5Bobject% 20Object% 5D
— rickul

2
Saya memperbarui jawaban saya. Lihat juga tautan yang saya tambahkan. Ini menunjukkan contoh lengkap.
— Günter Zöchbauer

Catatan pasangan: kode rickul harusnya berasal [ '/resetPassword' ], { queryParams: { username: loginName }})dari mana ]sebelum ekstra. Juga jangan lupa bahwa permintaan params peka terhadap huruf besar-kecil.
— Simon_Weaver

2
Jangan lupa untuk berlangganan queryParams sesuai target: stackoverflow.com/a/39146396/2726844
— Vince I

1
Atau jika Anda menggunakan rute, runGuardsAndResolvers: 'always'akan memuat ulang rute medium.com/engineering-on-the-incline/…
— Adam
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.