我有2个关于Angular 2路由器路径的问题,我花了一些时间在谷歌搜索它,但没有运气,无论如何我有以下路线设置:
{ path: 'contract', component: ContractInsertUpdateComponent, children: [
{ path: '' },
{ path: ':id', component: ContractInsertUpdateComponent, children:[
{ path: 'buyers', component : ContractTabBuyerComponent },
{ path: 'seller', component : ContractTabSellerComponent }
]}
]}
首先,让我解释一下我在这里尝试实现的目标,我想使用相同的组件来插入/更新合同。我也有更多的儿童路线和完整的网址应该看起来像
本地主机:4200 /合同/ 2 /买家
我首先感到的是默认的合约路线
{路径:'' }
如果我理解正确的路线就像是
本地主机:4200 /合同
它应该加载它执行atm的ContractInsertUpdateComponent,我的问题是:这是正确的方法吗?另外,如果可能的话,我想避免将空组件用作默认路由。
本地主机:4200 /合同/ 2
我得到错误:无法匹配任何路线。网址细分:'合同/ 2'
在我的理解中它应该加载ContractInsertUpdateComonent我错了吗?
我不知道还有什么地方可以寻求帮助,我需要一些人指出正确的方向......提前感谢您的帮助!
答案 0 :(得分:2)
`/ contract / 2匹配此路线
{ path: '' },
因为/contract/2
以''
开头(实际上每条路线都有)
然后搜索此路由的子路由但由于没有路由而失败。
{ path: '', pathMatch: 'full' },
应该修复它,因为路由器不会搜索以''
开头的路由,而只会搜索 ''
<强>更新强>
{ path: 'contract', component: ContractInsertUpdateComponent, children: [
{ path: '', pathMatch:'full', /* I guess you want some `component: ...` or `redirectTo: ...` here },
{ path: ':id', children:[
{ path: '', pathMatch:'full' },
{ path: 'seller', component : ContractTabSellerComponent }
]}
]}