如何侦听路线更改开始时触发的事件?我怎么能阻止这个事件?看起来事件对象没有任何方法可以阻止此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秒钟,以便完成页面更改动画。因此,退出时页面更改动画。
答案 0 :(得分:0)
将是:
(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
在[路线解析器]中启动动画,并在动画完成时解析承诺