Angular 4 : Route Transition Loading

标签 angular rxjs

我正在尝试创建一个简单的组件,它有一个 bool 标志 isLoading,当路由花费超过半秒的时间来解析时,该标志为 true

我有把它关掉的东西:

    this.router.events
        .filter(event => event instanceof NavigationEnd || event instanceof NavigationCancel || event instanceof NavigationError)
        .subscribe(event => this.isLoading = false);

但是我怎么说:

    this.router.events
        //given a NavigationStart
        //If you don't see NavigationEnd/NavigationCancel/NavigationError within 500ms
        .subscribe(event => this.isLoading = true);

最佳答案

this.router.events
        .debounceTime(500)
        .filter(event => event instanceof NavigationStart)
        .subscribe(event => this.isLoading = true);

这是什么意思:

.debounceTime(500) = 如果在 500 毫秒之前创建了另一个事件,请抑制我

.filter(event => event instanceof NavigationStart) = 仅从未跟随 500 毫秒的事件中获取 NavigateStart

.subscribe(event => this.isLoading = true); = 我们现在知道这是一个没有在 500 毫秒内跟随的导航开始,所以我们可以开始加载图标

关于 Angular 4 : Route Transition Loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479533/

相关文章:

arrays - RxJS:从 Observable.fromPromise 拆分数组结果

javascript - 可观察为嵌套在 Promise 中的 Promise

angular - 将元素添加到 Observable 数组 typescript

javascript - 功能策略已在本文档中禁用地理定位

html - 如何在 Angular2 应用程序中禁用 HTML5 表单验证?

angular - 是否可以使用 ChatGPT API 处理 Angular 中的流 api 调用?

angular - 在 Angular 9 中使可观察的调用同步

angular - 在收到 Angular 握手响应之前连接已关闭

javascript - 如何在 firebase/angularfire 中正确查询列表?

rxjs - merge 和 mergeAll 有什么区别?