Come passare un parametro a routerLink che si trova da qualche parte all'interno dell'URL?


208

So che posso passare un parametro routerLinkper percorsi come

/user/:id

scrivendo

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

ma che dire di percorsi come questo:

/user/:id/details

C'è un modo per impostare questo parametro o devo prendere in considerazione uno schema URL diverso?

Risposte:


348

Nel tuo esempio particolare dovresti fare quanto segue routerLink:

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

Per fare ciò in un controller, puoi iniettare Routere usare:

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

Maggiori informazioni nella sezione Array dei parametri di collegamento dei parametri angolari di Routing & Navigation


puoi fornire qualsiasi link dove posso trovare maggiori informazioni su questo ..
refactor

4
@CleanCrispCode Puoi leggere di più al riguardo nella documentazione di Angular nella guida del router: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek,

E la <button mat-button routerLink="...">View user</button>sintassi?
Stephane

33

Forse è davvero una risposta tardiva ma se vuoi navigare in un'altra pagina con param puoi,

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

inoltre non dovresti dimenticare di instradare la configurazione come,

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

11

Prima configura nella tabella:

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

ora nel tipo di codice script:

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

ricevere parametri in un altro componente

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

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

0

Esistono diversi modi per raggiungere questo obiettivo.

  • Tramite la direttiva [routerLink]
  • Il metodo navigate (Array) della classe Router
  • Il metodo navigateByUrl (stringa) che accetta una stringa e restituisce una promessa

L'attributo routerLink richiede l'importazione del modulo routingModule nel modulo funzione nel caso in cui il modulo funzione sia stato caricato in modo pigro o semplicemente importare il modulo routing app se non viene aggiunto automaticamente alla matrice di importazione AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Navigare
// 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()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.