javascript - Angular 4 - 检查是否所有页面资源都已完全加载(使加载器旋转直到所有资源都已完全加载)

标签 javascript angular typescript

我正在为我的 Angular 应用程序创建加载器。

最常见的方法是在订阅 http 请求时传递 bool 参数,但我的服务的响应是一系列图片 URL,因为页面中全是图片。

因此,当检索到 URL 时,加载程序会停止,但由于连接速度较慢,用户会因为图像尚未完成加载而感到恼火。

我曾尝试使用 Javascript 的加载事件来监听我的资源何时完成加载,以便我可以在那时停止加载器,但似乎我无法从监听器函数中操作加载器的值。

这是我尝试过的:

//the TS component 
isLoading: boolean;

ngOnInit() {
this.isLoading = true;
this.checkIfLoaded();
}

checkIfLoaded() {
  window.addEventListener("load", function (event) {
    console.log("All resources finished loading!");
    //here i should do something, either returning false or...
    //...manipulating the isLoading, but i can't access isLoading from here
  });
}


//the template
<ng-container *ngIf="isLoading">
   <app-spinner></app-spinner>
</ng-container>

环境:Angular 4.4 非常感谢任何帮助,谢谢

最佳答案

只需让您的组件实现 AfterViewInit 并在 ngAfterViewInit() 中将 isLoading 设置为 false

class YourComponent implements AfterViewInit {
    // ...
    ngAfterViewInit() {
        this.isLoading = false;
    }
}

无需附加额外的事件处理程序,angular 完全覆盖了它的生命周期回调。

关于javascript - Angular 4 - 检查是否所有页面资源都已完全加载(使加载器旋转直到所有资源都已完全加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50345082/

相关文章:

angular - Webpack 引导加载程序错误 : Can't resolve './bootstrap-styles' and Can't resolve './bootstrap-scripts'

typescript - 创建并返回可分配给对象的特定键的值

typescript 不推断类型

javascript - 在 Javascript 中可视化汉诺塔算法

Javascript:拆分逗号分隔的引号字符串

javascript - 为什么我不能在 jQuery 中使用 .css() 更改行高 CSS 属性?

javascript - 下拉菜单问题

angular - angular 7 中的 Karma Jasmine 单元测试问题 - 无法读取未定义的属性 'success'

Angular 5 - ngSwitch 和 ngSwitchCase 不在 html 的真实元素上

javascript - 在 Angular 2/Typescript 中使用 IScroll