#angular #ionic-framework #slider #ionic4 #autoplay
#angular #ionic-фреймворк #слайдер #ionic4 #автоматическое воспроизведение
Вопрос:
Я хочу автоматически перемещать ионный слайдер, но он не работает. слайдер также содержит изображения. данные получены из вызова API.
<ion-slides autoplay="5000" loop="true" speed="300" pager="true" >
<ion-slide *`ngFor`="let item of topStories">
<ion-card (click)=" this.newsService.onGoToTopStoryPage(item)">
<ion-card-content >
<ion-img [src] = "item.image"></ion-img>
<h2> <b>{{item.title}} </b></h2>
<h4>{{item.summary}}</h4>
</ion-card-content>
</ion-card>
</ion-slide>
</ion-slides>
Ответ №1:
Попробуйте, это может сработать в вашем приложении:
settings the options autoplay to true
slideOptsOne = {
initialSlide: 0,
slidesPerView: 1,
autoplay:true
};
page.html
<ion-slides [options]="slideOptsOne">
<ion-slide *`ngFor`="let item of topStories">
<ion-card (click)=" this.newsService.onGoToTopStoryPage(item)">
<ion-card-content>
<ion-img [src]="item.image"></ion-img>
<h2> <b>{{item.title}} </b></h2>
<h4>{{item.summary}}</h4>
</ion-card-content>
</ion-card>
</ion-slide>
</ion-slides>
Добавьте свою конфигурацию в options в файле page.ts. Дайте мне знать, работает это или нет.
Комментарии:
1. автозапуск: true отсутствует в документе ionicframework.
Ответ №2:
Не использовать ion-img
. Для следующих слайдов впервые отображается разбитое изображение. Используйте <img>
, как показано ниже.
Примечание: Команда Ionic разработала ion-img
для ion-virtual-scroll
.
.ts
import { IonSlides } from '@ionic/angular';
slideOptions = {
initialSlide: 1,
speed: 400,
};
constructor() { }
slidesDidLoad(slides: IonSlides): void {
slides.startAutoplay();
}
.html
<ion-slides [options]="slideOptions" pager="true" #slider (ionSlidesDidLoad)="slidesDidLoad(slider)">
<ion-slide *ngFor="let img of data?.images">
<img [src]="img">
</ion-slide>
</ion-slides>
Ответ №3:
Это файл typescript:
export class HomePage {
slider: any;
slideOptions = {
initialSlide: 0,
slidesPerView: 1,
autoplay: true
};
constructor() {}
slideChanged()
{
this.slider.stopAutoplay(); //this code for slide after page change
}
}
Это HTML-файл:
<ion-slides #slider loop="true" pager="true" [options]="slideOpts" (ionSlideTouchEnd)="slideChanged()" >
<ion-slide>
<img src="https://png.pngtree.com/thumb_back/fh260/back_pic/00/02/44/5056179b42b174f.jpg" />
</ion-slide>
<ion-slide>
<img src="https://www.neowebtec.com/images/banner-imgg.jpg" />
</ion-slide>
<ion-slide>
<img src="https://i.pinimg.com/originals/0b/a3/d6/0ba3d60362c7e6d256cfc1f37156bad9.jpg" />
</ion-slide>
</ion-slides>
Ответ №4:
Я думаю, вы столкнулись с гоночным состоянием. Возможно, элемент был отрисован до того, как данные (topStories) будут готовы. В этом случае нет перехода к «автозапуску».
Попробуйте добавить *ngIf к элементу, чтобы отобразить элемент, когда данные будут готовы. Например:
this.data_loaded = false;
...
this.apiGetData().then((data) => {
...
this.data_loaded = true;
});
######################################
<ion-slides *ngIf="data_loaded">
...
</ion-slides>
Ответ №5:
<ion-slides pager #Slider class="slides (ionSlidesDidLoad)="afterslidesLoad(Slider)">
<ion-slide>
<img src="image1" />
</ion-slide>
<ion-slide>
<img src="image2" />
</ion-slide>
</ion-slides>
afterslidesLoad(slides) {
slides.startAutoplay();
}
Приведенный выше код — мой рабочий код. Вы должны реализовать метод startAutoPlay.
Ответ №6:
Используйте свойство ввода [autoplay]="3000"
для передачи миллисекунд:
<ion-slides [pager]="true" [autoplay]="3000">
<ion-slide>
Slide 1
</ion-slide>
<ion-slide>
Slide 2
</ion-slide>
<ion-slide>
Slide 3
</ion-slide>
</ion-slides>
Ответ №7:
пожалуйста, попробуйте это решение:
<ion-slides *ngIf="topStories.length!=0" autoplay="5000" loop="true" speed="300" pager="true" >
<ion-slide *ngFor="let item of topStories">
<ion-card (click)=" this.newsService.onGoToTopStoryPage(item)">
<ion-card-content >
<ion-img [src] = "item.image"></ion-img>
<h2> <b>{{item.title}} </b></h2>
<h4>{{item.summary}}</h4>
</ion-card-content>
</ion-card>
</ion-slide>
</ion-slides>
Ответ №8:
Вот как использовать настройку автозапуска в Ionic 5
<ion-slides [options]="{ slidesPerView:2, autoplay: {delay: 1500} }">