Ionic 2 / Ionic 3 / Ionic 4: (ленивый) загрузка spinner для фотографий
Я использую ion-img В моем приложении ionic2 для правильной загрузки моих фотографий. Однако мне интересно, есть ли способ указать пользователю, что изображение действительно загружается.
Спасибо за вашу помощь!
EDIT: вот ответ, Если вам абсолютно необходимо использовать тег ion-img. Если нет, вы должны использовать Ionic-image-loader as AdminDev826 предложил.
Я, наконец, решил эту проблему с CSS! Когда изображение загружается в ionic 2, тег ion-img не имеет никакого класса. Однако, когда изображение наконец загружается, тег ion-img получает класс "img-loaded".
вот мое решение :
<ion-img [src]="img.src"></ion-img>
<ion-spinner></ion-spinner>
и мой CSS:
.img-loaded + ion-spinner {
display:none;
}
Я надеюсь, что это может помочь кому-то!
4 ответов
пожалуйста, используйте плагин Ionic-image-loader
-
установите пакет NPM
npm install --save ionic-image-loader
-
Установить Необходимые Плагины
npm i --save @ionic-native/file ionic plugin add cordova-plugin-file --save npm i --save @ionic-native/transfer ionic plugin add cordova-plugin-file-transfer --save
-
импорт модуля IonicImageLoader
Добавить IonicImageLoader.forRoot () в корневом модуле вашего приложения
import { IonicImageLoader } from 'ionic-image-loader'; // import the module @NgModule({ ... imports: [ IonicImageLoader.forRoot() ] }) export class AppModule {}
затем добавьте IonicImageLoader в ваш ребенок / общий модуль(ы)
import { IonicImageLoader } from 'ionic-image-loader'; @NgModule({ ... imports: [ IonicImageLoader ] }) export class SharedModule {}
Я, наконец, решил эту проблему с CSS! Когда изображение загружается в ionic 2, тег ion-img не имеет никакого класса. Однако, когда изображение наконец загружается, тег ion-img получает класс "img-loaded".
вот мое решение :
<ion-img [src]="img.src"></ion-img>
<ion-spinner></ion-spinner>
и мой CSS:
.img-loaded + ion-spinner {
display:none;
}
Я надеюсь, что это может помочь кому-то!
если вы хотите использовать img
тег вместо ion-img
вот решение:
<img src="{{image.src}}" (load)="loaded = true" [ngClass]="{'img-loaded':loaded}" [hidden]="!loaded" *ngIf="image_exists" />
<ion-spinner [ngClass]="{'center':true}" *ngIf="!loaded"></ion-spinner>
в вашем файле CSS вы должны написать следующее:
.img-loaded + ion-spinner {
display:none;
}
// .center in my case to make the spinner at the center
.center{
margin-left: auto;
margin-right: auto;
display: block;
}
loaded
- это логическая переменная со значением false по умолчанию, которое вы должны определить в своем компоненте.
ваше решение не является лучшим, потому что приложение по-прежнему загружает все изображения, например, в Facebook, как приложение, вы будете загружать все изображения из ленты в приложение, это сделает все очень медленно.
использовать этот: https://github.com/NathanWalker/ng2-image-lazy-load