'How do you set dynamic Carousel Indicators in Angular2?
I can only move to just one slide and then "next" and "prev" doesn't work. And I'm also unable to click on indicators to move slides.
But when I remove the div with class carousel-indicators, "next" and "prev" work without any problem, I just can not get it to work with indicators.
What I've done so far:
<div style="background-color: black;">
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleCaptions" *ngFor="show of anime; let i = index"
[attr.data-slide-to]="i" [ngClass]="{'active' : i == 0}" aria-current="true" aria-label="Slide 1"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item" *ngFor="let show of anime; let i = index" [ngClass]="{'active': i === 0}">
<img src="{{show.img}}" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>{{show.title}}</h5>
<p>{{show.description}}</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
</div>
TS file:
anime = [
{
img:
'https://www.ft.com/__origami/service/image/v2/images/raw/https%253A%252F%252Fs3-ap-northeast-1.amazonaws.com%252Fpsh-ex-ftnikkei-3937bb4%252Fimages%252F5%252F3%252F5%252F8%252F28668535-1-eng-GB%252F%25E3%2582%25BD%25E3%2583%258B%25E3%2583%25BC%25E4%25B8%258A%25EF%25BC%2589%25E8%25BF%25BD%25E5%258A%25A0%25E3%2580%2580%25E9%25AC%25BC%25E6%25BB%2585%25E3%2581%25AE%25E5%2588%258320200805183428557_Data.jpg?width=700&fit=cover&gravity=faces&dpr=2&quality=medium&source=nar-cms',
title: 'Demon Slayer',
description: 'Demon Slayer description',
},
{
img:
'https://okuha.com/wp-content/uploads/2020/01/What_is_anime_art_feature_image.jpg',
title: 'One Piece',
description: 'One Piece description',
},
{
img:
'https://www.lifewire.com/thmb/yc8DN9SND5G8YkCNLYr6qv80Qz4=/650x0/filters:no_upscale():max_bytes(150000):strip_icc():format(webp)/anime-pokemon-5a191e1789eacc00372449e8-512c78337fbe42b2b6cd6280bb7a23f6.jpg',
title: 'Pokemon',
description: 'Pokemon description',
},
];
What can I do to make it work?
Solution 1:[1]
This is how I did it:
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleCaptions" *ngFor="show of anime; let i = index"
[attr.data-bs-slide-to]="i" [ngClass]="{i == 0? 'active': ''}" aria-current="true" [attr.aria-label]="'Slide-' + i + 1"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item" *ngFor="let show of anime; let i = index" [ngClass]="{'i == 0? 'active': ''}">
<img src="{{show.img}}" class="d-block w-100" alt="no image here">
<div class="carousel-caption d-none d-md-block">
<h5>{{show.title}}</h5>
<p>{{show.description}}</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | ab1004 |
