Bagaimana cara mengirimkan parameter ke routerLink yang ada di suatu tempat di dalam URL?

208

Saya tahu saya bisa memberikan parameter ke routerLinkuntuk rute seperti

/user/:id

dengan menulis

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

tapi bagaimana dengan rute seperti ini:

/user/:id/details

Apakah ada cara untuk mengatur parameter ini atau haruskah saya mempertimbangkan skema URL yang berbeda?

Thorsten Westheider
sumber

Jawaban:

347

Dalam contoh khusus Anda, Anda akan melakukan hal berikut routerLink:

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

Untuk melakukannya di pengontrol, Anda dapat menyuntikkan Routerdan menggunakan:

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

Info selengkapnya di bagian Angular docs Link Parameters Array dari Routing & Navigation

Wojciech Kwiatek
sumber
dapatkah Anda memberikan tautan apa pun di mana saya dapat menemukan informasi lebih lanjut tentang ini ..
refactor
4
@CleanCrispCode Anda dapat membaca lebih lanjut tentang hal ini di dokumen Angular di panduan router: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek
Bagaimana dengan <button mat-button routerLink="...">View user</button>sintaks?
Stephane
33

Mungkin ini adalah jawaban yang sangat terlambat, tetapi jika Anda ingin menavigasi halaman lain dengan param Anda bisa,

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

Anda juga jangan lupa tentang perutean konfigurasi seperti,

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

Konfigurasi pertama dalam tabel:

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

sekarang dalam jenis kode skrip:

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

menerima params di komponen lain

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

  console.log(`${id},${guid}`);
  });
Rejwanul Reja
sumber
0

Ada beberapa cara untuk mencapai ini.

  • Melalui petunjuk [routerLink]
  • Metode navigasi (Array) dari kelas Router
  • Metode navigByUrl (string) yang mengambil string dan mengembalikan janji

Atribut routerLink mengharuskan Anda untuk mengimpor routingModule ke modul fitur jika Anda malas memuat modul fitur atau hanya mengimpor app-routing-module jika tidak secara otomatis ditambahkan ke array impor AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Menavigasi
// 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})
  • ArahkanByUrl
this._router.navigateByUrl(urlString).then((bool) => {}).catch()
makinyelure
sumber