Angular 4.0路由器NavigationStart事件不包含url成员

时间:2017-07-18 10:18:15

标签: angular events router

我刚刚将我的angualr-cli项目升级到Angualr 4.0,以及本地的Typescript@2.3.4,我的 app.component.ts 中的以下代码在升级前工作正常:

现在,事件中不再提供网址,

    router.events.filter(event => event instanceof NavigationStart)
      .subscribe(e => {
         this.currentUrl = e.url; // Error here 'url is not defined in Event'
           console.log("Now route", e.toString()); // logs something like NavigationStart(id: 1, url:'/my-url') as a string
    })

如何获得' url'来自' e'无需操纵' e.toString()'返回的字符串。的NavigationStart类。

当用户导航时,是否有不同的方法将当前和以前的路由作为字符串从路由器中获取?,请就此提出建议。

我的理解很少,并希望得到一些帮助。

1 个答案:

答案 0 :(得分:3)

尝试此操作以获取上一个和下一个网址:

 this.router.events
      .filter(event => event instanceof NavigationEnd)
      .pairwise()
      .subscribe((value: [NavigationEnd, NavigationEnd]) => {

        let previousUrl = value[0].url;
        let nextUrl = value[1].url;
      });

使用进口:

import "rxjs/add/operator/filter";
import "rxjs/add/operator/pairwise";