这是我第二次在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
}
但我想了解我的第一个解决方案无法正常工作的原因。
感谢您的帮助!
答案 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');
.......