angular - 如何检测 Angular 中的路由变化?

标签 angular routes angular2-routing

我希望检测到我的 AppComponent 中的路由更改。

此后我将检查全局用户 token 以查看用户是否已登录,以便在用户未登录时重定向用户。

最佳答案

在 Angular 2 中,您可以订阅(Rx 事件)到 Router 实例。 所以你可以做这样的事情

class MyClass {
  constructor(private router: Router) {
    router.subscribe((val) => /*whatever*/)
  }
}

编辑(自 rc.1 起)

class MyClass {
  constructor(private router: Router) {
    router.changes.subscribe((val) => /*whatever*/)
  }
}

编辑 2(自 2.0.0 起)

另见:Router.events doc

class MyClass {
  constructor(private router: Router) {
    router.events.subscribe((val) => {
        // see also 
        console.log(val instanceof NavigationEnd) 
    });
  }
}

关于angular - 如何检测 Angular 中的路由变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33520043/

相关文章:

angular - 使用 AngularFirestore 集合 orderBy 和 snapShotChanges 方法

Angular 2 Router(ES5)在页面重新加载时不起作用

javascript - 无法使用 Angular 6将图像下载为zip文件

外部订阅无法访问 Angular 数据

css - 自定义图标选项卡 Ionic 3

ruby-on-rails - 尽管在 rake 路由中可用,但出现奇怪的路由错误

php - Codeigniter子域路由

flutter - 在 Flutter 中获取之前的路由名称

node.js - Angular2 和 Express

javascript - Angular 2 : How do I get params of a route from outside of a router-outlet