我需要创建一个carousel来显示. ts中变量的图片。我计划使用ngFor。
我有一个静态Bootstrap 4 carousel:
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="assets/fortress.jpg" class="d-block w-100 carousel-pic" alt="...">
</div>
<div class="carousel-item">
<img src="assets/fortress.jpg" class="d-block w-100 carousel-pic" alt="...">
</div>
</div>
</div>
我在.ts文件中有一个名为pics的变量:
现在我试着把ngFor旋转木马,和活动的旋转木马只是第一张图片.问题:
- 旋转木马关闭了。只显示三个。当我尝试在那里设置 ngFor 时,它不起作用。
- 幻灯片显示第一张图片(活动),但第二张幻灯片显示相同的图片(因为循环再次开始),然后它停止,不显示第三张图片。
当我尝试将 ngFor 设置为carousel-item时,它不起作用,因为它需要活动类。此外,item?[0].pin_photos.url 只获得第一张图片。
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="http://MYURL/public/PinPhotos/{{item?.pin_photos[0].url}}"
class="d-block w-100 carousel-pic" alt="...">
</div>
<div *ngFor="let pic of pics">
<div class="carousel-item">
<img src="http://MYURL/public/PinPhotos/{{pic.url}}" class="d-block w-100 carousel-pic" alt="...">
</div>
</div>
</div>
</div>
我错过了什么?
5条答案
按热度按时间5kgi1eie1#
我使用
ngFor
第一个变量来设置第一个项的类trigger carousel manualy like this
demo 🚀
vsnjm48y2#
我认为ngFor会修改你的html树。
尝试用途:
取而代之是:
2wnc66cl3#
你可以试试这个,它使用
ngClass
只设置列表中的第一个项目为活动的。but5z9lq4#
您可以使用OnPush变更检测,所以创建一个哑组件。
现在你的循环不会再开始了。
sd2nnvve5#
你的代码有几个问题。
首先,您要在每个
carousel-item
上应用active
类。为了解决这个问题,我们需要从模板中删除硬编码的类,并将其动态添加到第一个项目。幸运的是,我们可以在ngFor
的帮助下获得索引,并使用ngClass
将其应用到第一个项目。接下来,对于你的
carousel-indicators
,你让它保持静态,有三个指示器,因此只显示了三个导航器按钮,以及carousel卡住的问题。为了解决这个问题,我们可以在指示器项上再次使用ngFor
,将索引绑定到data-slide-to
,然后像我们之前做的那样,使用ngClass
将active
类设置为第一个项。我使用Bootstrap 5,但将代码修改为Bootstrap 4,因此应该可以工作。
对于任何寻找Bootstrap 5解决方案的人来说,它非常相似: