我的导航栏中有一个搜索,它只是使用路由器在路径中传递查询并导航到正确的组件。
所以基本上我的导航栏组件中的搜索按钮:
onSubmit() {
this.router.navigate(['/search', { query: this.searchQuery }]);
}
然后在目标搜索组件中:
this.route.params.forEach((params: Params) => {
doSearch(params['query']);
}
虽然这在我更改查询时非常有效,但是当查询没有更改时它不会。我理解,通过订阅params Observable,当params保持不变时,我不会得到通知。路由器只是重用已经加载的组件,所以我不能在ngOnInit中使用任何代码,因为它没有被调用。
问题在于,仅仅因为搜索查询相同,结果可能不是。所以我需要一种方法再次调用doSearch,即使使用相同的参数。
有没有办法检测路由器何时路由到同一目的地而没有任何参数更改?
答案 0 :(得分:2)
我认为如果您订阅了this.router.events
可观察对象,即使查询保持不变,您也会收到通知。