有没有办法知道路线事件是否在角度2中不发生?

时间:2017-02-16 06:25:10

标签: angular events angular2-routing

在代码块中,当路由器事件发生时,以及路由器事件未发生时,我必须有条件地运行几个语句。 我尝试使用路由器订阅变量的closed属性。这并不有用。我想知道如果我可以检测到如果没有路由器事件,因为如果NO ROUTER事件是同步的,则运行的代码即使路由发生变化也会运行(因为这是异步的并且很少延迟)。

.catch((error: any) => {
        if (this.routerSubscription)
            this.routerSubscription.unsubscribe();
        this.routerSubscription =  this._router.events.subscribe(
            (event) => {
                if (event instanceof NavigationEnd) {
                   // code if router event occurs
                    this.routerSubscription.unsubscribe();
                }
            }
        );

        // code if no router event occurs
      return  Observable.throw(error);
  });

1 个答案:

答案 0 :(得分:0)

您可以设置一个标志,以防路由器事件发生,并在完整的回调中,检查是否发生了一个:

    bool wasEvent = false;
    this.routerSubscription =  this._router.events
        .filter(e => event instanceof NavigationEnd)
        .first() // take only one
        .subscribe(
          event => wasEvent = true,
          (err) => {},
          () => console.log(`Router events happened: ${wasEvents}`)
        );            
    );