Angular2 HostListener检查URL更改

时间:2016-11-16 15:26:30

标签: angular typescript

我的网站的每个页面都有一个导航栏组件 我希望它检查URL何时更改为HostListener。

@HostListener('window:hashchange', ['$event'])
onHashChange(event) {
    this.checkCurrentURL();
}  

private checkCurrentURL(){
    console.log("loaction : "+window.location.pathname)
}

然而它并不起作用。 有什么想法吗?

编辑:解决方案

我找到的解决方案是没有HostListener,但它可以工作。

constructor(private router : Router){
 router.events.subscribe((val) => {
  this.checkCurrentURL();
 });
}

2 个答案:

答案 0 :(得分:3)

您不需要HostListener。假设您正在开发单页应用程序,您想订阅路线更改事件。

答案 1 :(得分:0)

由于Angular是单页应用程序, 因此您可以在组件之一中定义一个全局变量 window ,并使用window全局变量,我们可以跟踪每条路线,,

  

window.location.href

window.location.href 将返回当前的网址,因此我们可以检查URL何时更改

constructor(private router : Router){
 router.events.subscribe((val) => {
    console.log(window.location.href); 
 });
}