Angular 2 this.router.events.subscribe在刷新或输入url时不起作用

时间:2017-01-27 14:08:21

标签: angular angular2-routing

我有一个用Angular 2编写的应用程序,导航在每条路线上应该看起来略有不同。我正在使用NavigationEnd监听this.router.events.subscribe它在单击链接时工作正常,但刷新页面或在网址栏中键入路径时,似乎不会触发此方法。

这是我的订阅功能的一部分:

subscribeToEvents() {
    this.router.events.subscribe((val) => {
        // see also 
        if (val instanceof NavigationEnd) {
            this.getCompanyName();
            var rou = val.url.toLowerCase().trim();
            console.log("our route", rou);
            switch (rou) {
                case "/projectlist":
                    this.currentPage = "projects";
                    this.page = "Project List";
                    break;

我已经尝试过控制台记录this.router.url以查看出现的情况,它只是始终控制日志' /'当我刷新页面时。

2 个答案:

答案 0 :(得分:3)

只需在构造函数中调用subscribeToEvents()即可。它肯定会解决你的问题

答案 1 :(得分:0)

我找到了一个解决方案,我只是在导航栏的ng-init中添加了一个超时,然后this.router.url获得了正确的路由。

      setTimeout(() => {
            if (this.router.url === '/projectlist') {
                this.currentPage = "projects";
                this.page = "Project List"
            } else if (this.router.url === '/dashboard') {
                this.currentPage = "dashboard";
                this.page = "Dashboard";
            } else if (this.router.url === '/equipmentlist') {
                this.currentPage = "equipment";
                this.page = "Equipment"
            } else if (this.router.url === '/recipelist') {
                   ... more routes ...
            } else {
                this.page = "Default";
            }
        }, 100);