Угловые скользящие направляющие не защелкиваются

Я пытаюсь внедрить библиотеку 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.

Обновление: я только что узнал, что изменение размера окна браузера устраняет эту проблему, теперь мне просто нужно выяснить, как заставить его работать изначально.

"Слайды не щелкают" что это значит?

Janitha Rasanga 23.12.2020 13:42

Если вы нажмете на вторую ссылку, вы увидите, что в примере она «привязывается» к каждой странице после ее перетаскивания, а не просто остается там, где она была или куда вы ее перетащили.

R4yY 23.12.2020 13:53

Попробуйте установить фиксированную ширину и высоту элемента (например, 100%).

Thomas 23.12.2020 15:51

Уже пробовал это, я нашел исправление, хотя.

R4yY 23.12.2020 16:00
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
1 342
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итак, я нашел решение самостоятельно:

@ViewChild('swiper') swiper: Swiper;  

  ngAfterContentChecked(): void
  {
    if (this.swiper){
      // @ts-ignore
      //This really works, trust me
      this.swiper.updateSwiper({});
    }
  }

Обновление swiper, как только оно попадает в поле зрения пользователя, устраняет эту проблему.

Это приводит к сбросу индекса слайда в Ionic/Angular до 0, если вы переходите на другую страницу/вкладку. Любое исправление для этого?

MadMac 14.08.2021 02:13
Ответ принят как подходящий

Это ответ @R4yYs, но с модификацией, чтобы остановить сброс индекса swiper. В противном случае это приведет к сбросу индекса слайда в Ionic/Angular до 0, если вы перейдете на другую страницу/вкладку.

 @ViewChild('swiper') swiper: Swiper;
  hasRunContentCheck = false;

  ngAfterContentChecked(): void {
    if (this.swiper && !this.hasRunContentCheck) {
      this.hasRunContentCheck = true;
      this.swiper.updateSwiper({});
    }
  }

Другие вопросы по теме