Angular 2路由器路径

时间:2016-11-28 18:03:08

标签: angular angular2-routing

我有2个关于Angular 2路由器路径的问题,我花了一些时间在谷歌搜索它,但没有运气,无论如何我有以下路线设置:

{ path: 'contract', component: ContractInsertUpdateComponent, children: [
         { path: '' },
         { path: ':id', component: ContractInsertUpdateComponent, children:[
                  { path: 'buyers', component : ContractTabBuyerComponent },
                  { path: 'seller', component : ContractTabSellerComponent }
        ]}                
]}

首先,让我解释一下我在这里尝试实现的目标,我想使用相同的组件来插入/更新合同。我也有更多的儿童路线和完整的网址应该看起来像

  

本地主机:4200 /合同/ 2 /买家

  1. 我首先感到的是默认的合约路线

    {路径:'' }

  2. 如果我理解正确的路线就像是

      

    本地主机:4200 /合同

    它应该加载它执行atm的ContractInsertUpdateComponent,我的问题是:这是正确的方法吗?另外,如果可能的话,我想避免将空组件用作默认路由。

    1. 此路线设置的其余部分当前不起作用,例如,如果我键入类似
    2. 的内容
        

      本地主机:4200 /合同/ 2

      我得到错误:无法匹配任何路线。网址细分:'合同/ 2'

      在我的理解中它应该加载ContractInsertUpdateComonent我错了吗?

      我不知道还有什么地方可以寻求帮助,我需要一些人指出正确的方向......提前感谢您的帮助!

1 个答案:

答案 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 } 
    ]} 
 ]}