【发布时间】:2019-06-08 04:34:24
【问题描述】:
我有一些从外部模块加载的路由(登录、回调、未经授权等),有时应用程序需要 2 或 3 秒才能导航到该路由。当它等待路由到导航页面时,屏幕是空白的,除了顶部的导航栏。我想在路由时添加加载消息。我通过订阅router.events Observable 找到了一种方法:
ngAfterViewInit() {
this._router.events.subscribe(event => {
if (event instanceof NavigationStart) {
this.routeLoading = true;
} else if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
this.routeLoading = false;
}
});
}
但实际上只在导航时间超过半秒时才执行此操作,例如。许多路线,一旦我们登录,大多是瞬时的,在这些情况下,我不想让加载程序在屏幕上闪烁。
有没有办法做到这一点?我正在考虑使用pipe 运算符之类的东西,而debounceTime 运算符可能会起作用,但我并不完全确定。有人有什么想法吗?
【问题讨论】:
-
思路不错,但是如果不知道之前导航结束的时间,怎么选择设置routeLoading呢?加载器/微调器上的动画可能会缓慢淡入,所以如果加载速度很快,在它被移除之前我几乎看不到(淡出)