如何监听Angular 2本机页面更改事件并防止默认?

时间:2017-05-08 21:38:34

标签: javascript angular

如何侦听路线更改开始时触发的事件?我怎么能阻止这个事件?看起来事件对象没有任何方法可以阻止此according to the docs

this.router.events
  .filter(event => event instanceof NavigationStart)
  .subscribe((event) => {
    console.log(event);
    event.preventDefault(); // NavigationStart doesn't have this method
  });

停止后,如何以编程方式再次触发路由更改?

我的最终目标是将路线更改延迟大约1秒钟,以便完成页面更改动画。因此,退出时页面更改动画。

2 个答案:

答案 0 :(得分:0)

HTML中的

将是:

(click)="timedFunction()"

并且该函数将在完成后执行定时动画和路线。

时间动画完成后:

this.router.navigate([route])

答案 1 :(得分:-1)

哟不需要手动处理此案例, Angular会为你做这个

只需使用[路线解析器] https://angular.io/docs/ts/latest/api/router/index/Resolve-interface.html

这个函数的结果可以是一个可观察的承诺 当此承诺解决或可观察完成时,将加载该页面

延迟页面加载的演示:http://embed.plnkr.co/u2qR9J/

但要回答与注册活动相关的第一个问题,请参阅: Show loading screen when navigating between routes in Angular 2

在[路线解析器]中启动动画,并在动画完成时解析承诺