儿童路线param不可用

时间:2017-08-03 11:02:47

标签: angular angular-router

这是我第二次在Angular路由器中遇到一些奇怪的事情。 我目前正在使用Angular v4.3.1。

我使用相同的组件来创建和编辑对象。 这就是我想为这个组件定义两个路由的原因,一个有id,另一个没有。

我尝试创建以下路线:

{
    path: 'company/settings/survey',
    component: SurveyComponent,
    children:[
      {path:':id',
      component:SurveyComponent
      }
    ]
}

但是在这种情况下,我的id param永远不会被设置。

我用以下方法检索它:

  this.route.paramMap.subscribe((params) => {
    if (params.has('id')) {
        //Some stuff
    }
  }

我目前正在使用故障恢复:

  {
    path: 'company/settings/survey',
    component: SurveyComponent,
  }, {
    path:'company/settings/survey/:id',
    component: SurveyComponent
  }

但我想了解我的第一个解决方案无法正常工作的原因。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

在您的第一个示例中,您的代码将尝试路由到另一个SurveyComponent中的SurveyComponent,我认为这不是您打算做的。

子路由被加载到父组件

中的<router-outlet>

答案 1 :(得分:1)

试试这个:

{
    path: 'company/settings/survey',
    children:[
      {
          path:'',  component:SurveyComponent
      },
      {
          path:':id',  component:SurveyComponent
      },
    ]
}

然后

constructor(route: ActivatedRouteSnapshot) {}
this.route.paramMap.get('id');
.......