如何订阅第一条路线

时间:2016-12-19 13:20:32

标签: angular angular2-routing

这是我的路由器:

Routes = [
  { path: 'immeuble', component: ImmeubleComponent ,children:[
    { path: ':id', children: [ { path: 'general',loadChildren: '...'}]
    },
    { path: '', pathMatch:'full', component:AccueilComponent }, //when in url we have /immeuble this is called
  ]},
];

我尝试的内容:订阅params['id'] .ts文件ImmeubleComponent内的this.activatedRoute.firstChild.params.subscribe( p => { console.log(p); } )

所以ImmeubleComponent的.ts文件看起来像:

/immeuble

但是当我刷新页面时,这只订阅了一次,为什么? 如果我转到p=undefined我的/immeuble/2/general 如果我输入网址p=2,我就会很好router.navigate()

但这次匹配只有在我进入页面时,当我使用ImmeubleComponent浏览我的应用时 我的订阅没有发出?

我想从varchar订阅我的身份改变吗?如何实现?

更新

添加firstChild.params

1 个答案:

答案 0 :(得分:1)

我认为您需要在每次导航后再次订阅firstChild.params,因为您正在远离此子路线。如果您不在这些路线之间使用back,那么我认为它仅适用于firstChild.params.subscribe

这可能对您有用

constructor(router:Router, activatedRoute:ActivatedRoute) {
  router.events.filter(e => e instanceof NavigationEnd).subscribe(e => {
    console.log('params', activatedRoute.firstChild.snapshot.params);
  });
}

Plunker example