Wie übergebe ich einen Parameter an routerLink, der sich irgendwo in der URL befindet?


208

Ich weiß, dass ich einen Parameter routerLinkfür Routen wie übergeben kann

/user/:id

durch Schreiben

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

aber was ist mit Routen wie dieser:

/user/:id/details

Gibt es eine Möglichkeit, diesen Parameter festzulegen, oder sollte ich ein anderes URL-Schema in Betracht ziehen?

Antworten:


347

In Ihrem speziellen Beispiel würden Sie Folgendes tun routerLink:

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

Um dies in einem Controller zu tun, können Sie Folgendes injizieren Routerund verwenden:

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

Weitere Informationen finden Sie im Abschnitt Angular Docs Link Parameters Array von Routing & Navigation


Können Sie einen Link angeben, über den ich weitere Informationen dazu finden kann?
Refactor

4
@CleanCrispCode Weitere Informationen finden Sie in den Angular-Dokumenten im Router-Handbuch: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek

Was ist mit der <button mat-button routerLink="...">View user</button>Syntax?
Stephane

33

Vielleicht ist es eine sehr späte Antwort, aber wenn Sie mit param auf einer anderen Seite navigieren möchten, können Sie

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

Auch sollten Sie nicht vergessen, Routing-Konfiguration wie,

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

11

Zuerst in Tabelle konfigurieren:

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

jetzt im Typ Skriptcode:

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

Parameter in einer anderen Komponente empfangen

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

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

0

Es gibt mehrere Möglichkeiten, dies zu erreichen.

  • Über die Anweisung [routerLink]
  • Die Navigationsmethode (Array) der Router-Klasse
  • Die navigateByUrl-Methode (Zeichenfolge), die eine Zeichenfolge verwendet und ein Versprechen zurückgibt

Für das Attribut routerLink müssen Sie das routingModule in das Feature-Modul importieren, falls Sie das Feature-Modul verzögert geladen haben, oder das App-Routing-Modul importieren, wenn es nicht automatisch zum AppModule-Import-Array hinzugefügt wird.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Navigieren
// 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()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.