Angular2路由器 - 导航到具有不同参数的当前页面

Avi*_*Avi 20 angular2-routing angular

我试图用不同的参数路由到当前页面,但没有用.我有一个触发的组合框:

this.router.navigate(['page', selectedId]);
Run Code Online (Sandbox Code Playgroud)

网址正在发生变化,但就是这样.

如何使用不同的参数路由到同一页面?

mxi*_*xii 26

该页面不会刷新,导致这是如何Router工作..没有刷新页面!

您必须订阅路由参数以检测它们中的更改,然后对该信息执行任何操作.

因此,请注入ActivatedRoute您的组件并订阅这样的参数:

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params.subscribe(params => {
     // PARAMS CHANGED .. TO SOMETHING REALLY COOL HERE ..

     // for example extract the id..
     let id = +params['id']; // (+) converts string 'id' to a number

   });
}
Run Code Online (Sandbox Code Playgroud)

  • 这很奇怪,当路由到同一页面时,组件树停滞不前,开发人员需要手动模拟所有事件?这真的很复杂! (3认同)

Avi*_*Avi 6

好的,在阅读了你所有的答案之后,特别是@mxii(谢谢你),我明白了:

  1. 当路由到具有不同参数的同一页面时,只有参数会发生变化。DOM 静止不动,没有组件重建,没有 onInit 循环。
  2. OnChanges 钩子在每次数据绑定更改时触发,这意味着如果我将参数传递给子组件,我不能在此参数上使用 OnInit,我必须使用 OnChanges 钩子。

好课,谢谢!