Я пытаюсь внедрить библиотеку Swiper Angular в свой проект Angular 10/Ionic 5. Проблема, с которой я сталкиваюсь, заключается в том, что слайды не фиксируются, и кажется, что это всего лишь одна большая страница, которую я могу перетащить.
Это пример «Начало работы», который я пробовал, он показывает страницы правильно, я полагаю, но часть смахивания кажется немного неправильной, без привязки, и она не продолжает скользить, если вы отпустите, как показано здесь.
<swiper class = "slide-pic-preview" [slidesPerView] = "3" [spaceBetween] = "50"
(swiper) = "onSwiper($event)" (slideChange) = "onSlideChange()"
[navigation] = "true" [pagination] = "{ clickable: true }">
<ng-template swiperSlide>Slide 1</ng-template>
<ng-template swiperSlide>Slide 2</ng-template>
<ng-template swiperSlide>Slide 3</ng-template>
<ng-template swiperSlide>Slide 4</ng-template>
<ng-template swiperSlide>Slide 5</ng-template>
<ng-template swiperSlide>Slide 6</ng-template>
</swiper>
Я также установил все компоненты, необходимые для навигационной части в конструкторе:
constructor() {
SwiperCore.use([Navigation, Pagination, Scrollbar, A11y]); }
Кнопки навигации также не делают ничего, кроме запуска события onSlideChange, как и обычное пролистывание, но не с каждой страницей, а как каждые 20 пикселей, которые я перетаскиваю вокруг события.
И стиль импортируется в файл модуля scss.
Обновление: я только что узнал, что изменение размера окна браузера устраняет эту проблему, теперь мне просто нужно выяснить, как заставить его работать изначально.
Если вы нажмете на вторую ссылку, вы увидите, что в примере она «привязывается» к каждой странице после ее перетаскивания, а не просто остается там, где она была или куда вы ее перетащили.
Попробуйте установить фиксированную ширину и высоту элемента (например, 100%).
Уже пробовал это, я нашел исправление, хотя.
Итак, я нашел решение самостоятельно:
@ViewChild('swiper') swiper: Swiper;
ngAfterContentChecked(): void
{
if (this.swiper){
// @ts-ignore
//This really works, trust me
this.swiper.updateSwiper({});
}
}
Обновление swiper, как только оно попадает в поле зрения пользователя, устраняет эту проблему.
Это приводит к сбросу индекса слайда в Ionic/Angular до 0, если вы переходите на другую страницу/вкладку. Любое исправление для этого?
Это ответ @R4yYs, но с модификацией, чтобы остановить сброс индекса swiper. В противном случае это приведет к сбросу индекса слайда в Ionic/Angular до 0, если вы перейдете на другую страницу/вкладку.
@ViewChild('swiper') swiper: Swiper;
hasRunContentCheck = false;
ngAfterContentChecked(): void {
if (this.swiper && !this.hasRunContentCheck) {
this.hasRunContentCheck = true;
this.swiper.updateSwiper({});
}
}
"Слайды не щелкают" что это значит?