Як передати параметр routerLink, який знаходиться десь усередині URL-адреси?


208

Я знаю, що можу передати параметр routerLinkдля таких маршрутів, як

/user/:id

написанням

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

а як щодо таких маршрутів:

/user/:id/details

Чи є спосіб встановити цей параметр чи слід розглянути іншу схему URL-адрес?

Відповіді:


347

У вашому конкретному прикладі ви зробите наступне routerLink:

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

Для цього в контролері ви можете вводити Routerта використовувати:

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

Більш детальну інформацію в кутовому DOCS Link Параметри масиву секції маршрутизації і навігації


Ви можете надати будь-яке посилання, де я можу знайти більше інформації про це ..
refactor

4
@CleanCrispCode Детальніше про це можна прочитати в кутових документах на посібнику з маршрутизатора: angular.io/docs/ts/latest/guide/…
Войцех Квіатек

Що з <button mat-button routerLink="...">View user</button>синтаксисом?
Стефан

33

Можливо, це справді пізня відповідь, але якщо ви хочете перейти на іншу сторінку з парам, ви можете,

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

також не слід забувати про конфігурацію маршрутизації,

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

11

Перша настройка в таблиці:

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

тепер введіть код скрипту:

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

отримувати парами в іншому компоненті

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

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

0

Існує кілька способів цього досягти.

  • Через [routerLink] директиву
  • Метод навігації (масив) класу Router
  • Метод navigateByUrl (string), який приймає рядок і повертає обіцянку

Атрибут routerLink вимагає, щоб ви імпортували модуль routing в модуль функції у випадку, якщо ви ледаче завантажили модуль функції або просто імпортуєте модуль маршрутизації додатків, якщо він автоматично не додається до масиву імпорту AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Навігація
// 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()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.