我有一个 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);
效果很好,但是当我更改为添加/事务时:
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 之后使用了 /transactions。知道如何在 url 中的参数之后完成子页面吗?
EDIT CompanyTransactionsComponent 用于父子组件,因为还没有 CompanyHomeComponent,所以当没有进入子页面时,交易页面将是默认页面。除了 CompanyTransactionsComponent 之外,还有多个子组件我省略了以保持代码更短。