2016-08-09 3 views
9

Я использую ион-img в приложении ionic2 для правильной загрузки изображений. Однако, интересно, есть ли способ указать пользователю, что изображение действительно загружается.Ionic 2/Ionic 3/Ionic 4: (Lazy) Загрузочный счетчик для изображений

Благодарим за помощь!

EDIT: Вот ответ, если вам абсолютно необходимо использовать тег ion-img. Если нет, вы должны использовать ionic-image-loader, как предлагалось AdminDev826.

Я, наконец, решил эту проблему с помощью CSS! Когда изображение загружается в ионном 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; 
} 

Я надеюсь, что это может помочь кому-то!

ответ

8

Пожалуйста, используйте ионно-образ-загрузчик плагин

  1. Установите НПМ пакет

    npm install --save ionic-image-loader 
    
  2. Установите необходимый Плагины

    модуль
    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 
    
  3. Импорт 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 {} 
    
+0

Пожалуйста, проверьте эту ссылку для получения более подробной информации. – AdminDev826

+0

https://www.npmjs.com/package/ionic-image-loader – AdminDev826

+0

Я действительно использую это ;-) Спасибо за новый ответ! –

13

Я, наконец, решил эту проблему с помощью CSS! Когда изображение загружается в ионном 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; 
} 

Я надеюсь, что это может помочь кому-то!

3

Ваше решение не самое лучшее, потому что приложение по-прежнему загружает все изображения. Например, в приложении, посвященном Facebook, вы будете загружать все изображения из Корзины в свое приложение, это сделает все очень медленным.

Используйте это: https://github.com/NathanWalker/ng2-image-lazy-load

+1

Это зависит от того, как вы используете этот код. В приложении в стиле facebook используйте только следующее: https://ionicframework.com/docs/v2/api/components/infinite-scroll/InfiniteScroll/ –

+0

@Yossi Neiman Есть ли у вас пример того, как я могу использовать ng2-image- ленивая загрузка внутри приложения ionic2? –

6

Если вы хотите использовать 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 - это логическая переменная, которую вы должны определить в своем компоненте.

+0

Спасибо за этот ответ! ;-) –

+0

Добро пожаловать, надеюсь, вы найдете полезным :) –

Смежные вопросы