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

时间:2016-10-31 01:20:13

标签: angular

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

所以基本上我的导航栏组件中的搜索按钮:

onSubmit() {
  this.router.navigate(['/search', { query: this.searchQuery }]);
}

然后在目标搜索组件中:

this.route.params.forEach((params: Params) => {
  doSearch(params['query']);
}

虽然这在我更改查询时非常有效,但是当查询没有更改时它不会。我理解,通过订阅params Observable,当params保持不变时,我不会得到通知。路由器只是重用已经加载的组件,所以我不能在ngOnInit中使用任何代码,因为它没有被调用。

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

有没有办法检测路由器何时路由到同一目的地而没有任何参数更改?

1 个答案:

答案 0 :(得分:2)

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