angular - 如何在显示 Angular 网站之前加载图像
问题描述
我一直在用 Angular 做一个网站,我需要在显示之前加载所有图像。我试图找到一种方法来制作一个预加载器视图,该视图将在/assets
文件夹中的所有图像都被加载之前显示,但我找不到任何东西。
我怎样才能在Angular中正确地做到这一点?
解决方案
我可以给你 2 个选项来完成(假设你有图片 url 列表):
第一种方式
images = ["IMG_1_SRC","IMG_2_SRC"];
loaded = 0;
loadImages(){
for(let i = 0; i < this.images.length; i++){
let img = new Image();
img.onload = () => {
this.loaded();
}
img.src = this.images[i];
}
}
loaded(){
this.loaded++;
if(this.images.length == this.loaded){
//all images loaded
}
}
第二种方式
images = ["IMG_1_SRC","IMG_2_SRC"];
loaded = 0;
<img hidden *ngFor="let img of images;" [src]="img" (load)="loaded()" />
loaded(){
this.loaded++;
if(this.images.length == this.loaded){
//all images loaded
}
}
推荐阅读
- sql-server - 将多个文本文件导入单个 2 列 SQL 表(文件名、文本内容)
- c# - 我想在窗口内截屏
- scala - 试图让惰性评估适用于无限流
- android - 以编程方式更新应用程序时解析错误
- java - 使用 Spring data JPA 获取单列,无需查询
- javascript - 如何在 macos 中通过 nodejs 访问 cgroups?
- python - PyQt4:现有文本框和按钮已删除,但未显示新标签
- python - 如何将 scikit-learn (make_circle) 替换为我自己的数据集?
- swift - 尽管我正确设置了 y,但 Toast UILabel 仍出现在屏幕外
- python - 如何使用 openCV 和 Logitech C920 使 python 每秒记录 30 或 60 帧