【发布时间】:2019-02-01 19:58:31
【问题描述】:
我有一个 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);
效果很好,但是当我更改为添加 /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 之后使用了 /transactions。知道如何在 url 中的参数后面创建一个子页面吗?
编辑 CompanyTransactionsComponent 用于父子页面,因为还没有 CompanyHomeComponent,所以在没有子页面的情况下,事务页面将是默认页面。除了 CompanyTransactionsComponent 之外,还有多个子组件我省略了以保持代码更短。
【问题讨论】:
标签: angular parameters angular-router routeparams route-parameters