如何在Angular2中检测到相同页面的路由?

如何在Angular2中检测到相同页面的路由?,angular,Angular,我在导航栏中有一个搜索,它只使用路由器在路由中传递查询并导航到正确的组件 基本上,对于我的导航栏组件中的搜索按钮: onSubmit() { this.router.navigate(['/search', { query: this.searchQuery }]); } this.route.params.forEach((params: Params) => { doSearch(params['query']); } 然后在目标搜索组件中: onSubmit() {

我在导航栏中有一个搜索,它只使用路由器在路由中传递查询并导航到正确的组件

基本上,对于我的导航栏组件中的搜索按钮:

onSubmit() {
  this.router.navigate(['/search', { query: this.searchQuery }]);
}
this.route.params.forEach((params: Params) => {
  doSearch(params['query']);
}
然后在目标搜索组件中:

onSubmit() {
  this.router.navigate(['/search', { query: this.searchQuery }]);
}
this.route.params.forEach((params: Params) => {
  doSearch(params['query']);
}
当我更改查询时,这种方法可以很好地工作,但当查询没有更改时,它就不能工作。我理解,由于订阅了可观察的参数,当参数保持不变时,我不会收到通知。路由器只是重用已经加载的组件,所以我不能在ngOnInit中使用任何代码,因为它没有被调用

问题在于,仅仅因为搜索查询是相同的,结果可能不一样。所以我需要一种方法再次调用doSearch,即使使用相同的参数


是否有任何方法可以检测路由器何时路由到同一目的地而不改变任何参数?

我认为如果您订阅
this.router.events
observable,即使查询保持不变,您也会收到通知。

谢谢,使用这些事件使其工作正常。然而,它更像是一种变通方法,而不是真正的解决方案。