Я использую библиотеку @ ngu / carousel для создания динамических c каруселей в моем приложении Angular, проблема в том, что каждый элемент внутри контейнера карусели дублируется, это вызывает первый элемент, который отображается дважды, когда у меня недостаточно элементов для заполнения одного слайда.
Это моя структура карусели:
carouselConfig: NguCarouselConfig = {
grid: { xs: 1, sm: 1, md: 3, lg: 3, all: 0 },
loop: false,
slide: 3,
touch: false,
point: {
visible: true,
hideOnSingleSlide: true
},
velocity: 0.2
};
Я строю карусель внутри вкладки, так что на каждой вкладке есть карусель с разным количеством предметов, на каждом слайде есть 3 предмета, все отлично работает, когда в карусели 3+ предмета, но в случае, если у меня только 2, вместо того, чтобы показывать только эти 2, первый предмет также отображается на 3-й позиции:
Текущий результат
На изображении выше элементы с зеленой рамкой - это один и тот же элемент, в этой карусели я только всего 2 элемента, но вместо этого в разметке отображается 4.
Результирующая разметка
Есть ли способ избежать дублирования элементов, чтобы, когда у меня было только 2 элемента, это показывает только те 2 и пробел, где будет находиться третий?
Ожидаемый результат
Это мой HTML код для построения карусели внутри каждой вкладки:
<ngu-carousel #myCarousel [inputs]="carouselConfig"
[dataSource]="filterTabs(title)">
<div *nguCarouselDef="let item; let i = index" class="item">
<div class="wsm_product-item" (click)="selectProduct(item._id)" [ngClass]="activeProduct(item._id) ? 'carousel-active' : ''">
<header class="wsm_product-header">
<span>Available For</span>
<img src="/assets/img/icon-google.png" *ngIf="item.type === 'adwords'" width="15" title="{{ item.type }}" alt="Google Ads">
<img src="/assets/img/svg/icon-mads.svg" *ngIf="item.type === 'bing'" width="15" title="{{ item.type }}" alt="Bing Ads">
<img src="/assets/img/icon-google.png" *ngIf="item.type === 'all'" width="15" title="{{ item.type }}" alt="Google Ads">
<img src="/assets/img/svg/icon-mads.svg" *ngIf="item.type === 'all'" width="15" title="{{ item.type }}" alt="Bing Ads">
</header>
<h3 class="wsm_product-title" title="{{item.name}}">{{item.name}}</h3>
<p class="wsm_product-description">{{item.description}}</p>
</div>
</div>
<button NguCarouselPrev class="mdi mdi-chevron-left wsm_prod-nav-previous" [ngClass]="myCarousel.isFirst ? 'carousel-disable' : ''"></button>
<button NguCarouselNext class="mdi mdi-chevron-right wsm_prod-nav-next" [ngClass]="myCarousel.isLast ? 'carousel-disable' : ''"></button>
<ul class="myPoint" NguCarouselPoint>
<li *ngFor="let i of myCarousel?.pointNumbers; let i = index" [class.active]="i==myCarousel.activePoint" (click)="myCarousel.moveTo(i)"></li>
</ul>
</ngu-carousel>
И функция фильтрации элементов на основе свойства:
filterTabs(title: string) {
return this.carouselItems.filter(cp => cp.objectives.includes(title));
}