У меня есть приложение Angular 5, в котором мне нужен URL-адрес для использования следующей формы:
www.example.com/#/company/<companyId>/transactions
Я использую розетку без имени <router-outlet></router-outlet>
CompanyIdэто параметр.Сначала я остановил часть транзакций в маршрутизаторе и убедился, что могу правильно добраться до страницы транзакций, связанной с CompanyTransactionsComponent.
Правило маршрутизатора:
www.example.com/#/company/<id>/
{ path: 'company/:companyId', component: CompanyTransactionsComponent }
this.router.navigateByUrl('/company/' + user.companyId);
, которое работало нормально, нокогда я изменил на add / Transactions:
www.example.com/#/company/<id>/transactions/
{ path: 'company/:companyId/transactions', component: CompanyTransactionsComponent }
this.router.navigateByUrl('/company/' + user.companyId + '/transactions/');
Это выдало мне ошибку Cannot match any routes.
, поэтому я попробовал несколько других вариантов ниже:
{
path: 'company/:companyId',
component: CompanyTransactionsComponent,
children: [
{
path: 'transactions',
component: CompanyTransactionsComponent
}
]
},
и:
RouterModule.forRoot([
{ path: 'company/:companyId', component: CompanyTransactionsComponent }
],
RouterModule.forChild([
{
path: 'company/:companyId',
children: [
{
path: 'transactions',
component: CompanyTransactionsComponent
}
]
},
])
Оба выдают одну и ту же ошибку.Кажется, это происходит только потому, что я использую / транзакции после параметра /: companyId.Любая идея, как я могу добиться, чтобы подстраница следовала за параметром в URL?
EDIT CompanyTransactionsComponent используется как для родителя, так и для ребенка, потому что еще нет CompanyHomeComponent, поэтому транзакциистраница будет страницей по умолчанию, когда никакая подстраница не введена.Есть несколько дочерних элементов, кроме компонента CompanyTransactions, который я оставил, чтобы сократить код.