Я пытаюсь использовать swiper.js, но его нумерация страниц не работает, слайдер работает, но нет нумерации страниц, вот код.
тс
ngAfterViewInit(): void {
new Swiper('.swiper-container', {
spaceBetween: 30,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
breakpoints: {
767: {
slidesPerView: 2,
},
},
});
}
HTML
<div class = "swiper swiper-container">
<div class = "swiper-wrapper">
<div class = "swiper-slide">IMAGE 1</div>
<div class = "swiper-slide">IMAGE 2</div>
<div class = "swiper-slide">IMAGE 3</div>
<div class = "swiper-slide">IMAGE 4</div>
<div class = "swiper-slide">IMAGE 5</div>
</div>
<div class = "swiper-pagination"></div>
</div>
Слайдер работает, отображаются только два слайда, а нумерация страниц — нет.
@ davidlj95 davidlj95 Спасибо за совет, я обновил свой код, но, как вы сказали, это может не решить проблему, но это не так.
Вот рабочий пример реализации элемента Swiper с нумерацией страниц: stackblitz.com/edit/… (режим WebComponent — рекомендуемый способ включения его в приложение Angular. См. swiperjs.com/angular) .
Рад слышать это ;)
Я думаю, что вам не хватает одного атрибута в нумерации страниц для отображения маркеров или страниц. Не могли бы вы попробовать что-нибудь подобное?
pagination: {
el: '.swiper-pagination',
renderBullet: function (index, className) {
return '<span class = "' + className + '">' + (index + 1) + '</span>';
},
clickable: true,
},
Все еще не работает
Рад, что Лукас помог.
Итак, я решил решение, увидев ответ Лукаса, мне пришлось добавить
import { register } from 'swiper/element/bundle';
register();
в файле main.ts
Код инициализации внешней библиотеки обычно должен выполняться за пределами зоны Zone.js Angular, чтобы избежать ненужных запусков обнаружения изменений. О том, как это сделать, смотрите здесь: angular.dev/best-practices/… Достаточно просто разместить код инициализации
new Swiper
внутри обратного вызоваrunOutisdeAngular
. Не уверен, что это решит проблему, но это определенно приведет к увеличению производительности :)