About custom pagination.
I am using Angular 12.
HTML:
<section class="products-preview">
<div class="swiper products-preview__swiper">
<swiper [config]="swiperConfig">
<ng-template *ngFor="let item of slides"
class="swiper-slide"
swiperSlide>Some HTML</ng-template><!-- /swiper-slide -->
</swiper><!-- /swiper-wrapper -->
<div class="products-preview__pagination">
<div class="swiper-pagination"></div><!-- /swiper-pagination -->
</div><!-- /products-preview__pagination -->
</div><!-- /swiper -->
</section><!-- /products-preview -->
.ts file:
import {Component, OnInit, ViewEncapsulation} from '@angular/core';
import SwiperCore, {Pagination, SwiperOptions} from 'swiper';
import {ProductsPreviewSliderInterface} from "../../interfaces/products-preview-slider.interface";
import {ProductsPreviewSliderService} from "../../services/products-preview-slider.service";
SwiperCore.use([
Pagination,
]);
@Component({
selector: 'app-test-slider',
templateUrl: './test-slider.component.html',
styleUrls: ['./test-slider.component.scss'],
encapsulation: ViewEncapsulation.None // Ability to style child components
})
export class TestSliderComponent implements OnInit {
public slides: ProductsPreviewSliderInterface[] = [];
public swiperConfig: SwiperOptions = {};
constructor(private productsPreviewSliderService: ProductsPreviewSliderService ) {}
ngOnInit() {
// getSlides() service method returns an array of objects containing information about slides
const slidesArr = this.slides = this.productsPreviewSliderService.getSlides();
// swiper config, which we pass to the HTML
this.swiperConfig = {
pagination: {
el: '.swiper-pagination',
clickable: true,
renderBullet: function (index, className) {
// Create a pagination element
return '<div class="' + className + '">' +
'<div class="products-preview__inner">' +
'<img src="'+ slidesArr[index]['pagination']['icon'] +'" alt="" class="products-preview__icon">' +
'<div class="products-preview__name">'+ slidesArr[index]['pagination']['name'] +'</div>' +
'<div class="products-preview__txt">'+ slidesArr[index]['pagination']['text'] +'</div>' +
'</div>' +
'</div>';
},
}
};
}
}