Как передать параметр routerLink, который находится где-то внутри URL?

208

Я знаю, что могу передать параметр routerLinkдля таких маршрутов, как

/user/:id

написав

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

но как насчет маршрутов, таких как этот:

/user/:id/details

Есть ли способ установить этот параметр или я должен рассмотреть другую схему URL?

Торстен Вестхайдер
источник

Ответы:

348

В вашем конкретном примере вы бы сделали следующее routerLink:

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

Для этого в контроллере вы можете ввести Routerи использовать:

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

Дополнительная информация в разделе « Параметры угловых документов» в разделе « Маршрутизация и навигация».

Войцех Квятек
источник
Можете ли вы предоставить любую ссылку, где я могу найти более подробную информацию об этом ..
рефакторинг
4
@CleanCrispCode Вы можете узнать больше об этом в Angular docs в руководстве по маршрутизатору: angular.io/docs/ts/latest/guide/…
Wojciech Kwiatek
Как насчет <button mat-button routerLink="...">View user</button>синтаксиса?
Стефан
33

Может быть, это действительно поздний ответ, но если вы хотите перейти на другую страницу с параметром, вы можете,

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

Также вы не должны забывать о конфигурации маршрутизации, как,

 [path: 'user/:id/details', component:userComponent, pathMatch: 'full']
Rıdvan
источник
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}`);
  });
Rejwanul Reja
источник
0

Есть несколько способов достижения этого.

  • С помощью директивы [routerLink]
  • Метод navigate (Array) класса Router
  • Метод navigateByUrl (string), который принимает строку и возвращает обещание

Атрибут routerLink требует, чтобы вы импортировали routingModule в функциональный модуль в случае, если вы лениво загрузили функциональный модуль или просто импортируете app-routing-module, если он не добавляется автоматически в массив импорта AppModule.

  • RouterLink
<a [routerLink]="['/user', user.id]">John Doe</a>
<a routerLink="urlString">John Doe</a> // urlString is computed in your component
  • Navigate
// 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()
makinyelure
источник