angular - ng-bootstrap 中轮播的图像缩略图

标签 angular carousel ng-bootstrap

我有一个 Angular 4 的轮播,我正在使用 ng-bootstrap。我想更改指标并使它们成为缩略图像 this

这是我当前的 ngb 代码

<div class="row">
    <div class="col-md-12">
        <ngb-carousel>
            <ng-template ngbSlide>
                <img class="img-fluid" src="https://lorempixel.com/900/500 r=1" alt="Random first slide">
                <div class="carousel-caption">
                    <h3>First slide label</h3>
                    <p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
                </div>
            </ng-template>
            <ng-template ngbSlide>
                <img src="https://lorempixel.com/900/500?r=2" alt="Random second slide">
                <div class="carousel-caption">
                    <h3>Second slide label</h3>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
                </div>
            </ng-template>
            <ng-template ngbSlide>
                <img src="https://lorempixel.com/900/500?r=3" alt="Random third slide">
                <div class="carousel-caption">
                    <h3>Third slide label</h3>
                    <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>
                </div>
            </ng-template>
        </ngb-carousel>
    </div>
</div>

最佳答案

旧答案

我在搜索类似功能时遇到了您的问题。不幸的是,我们无法自定义 carousel-indicator正如这篇文章的时间。你可以看看开的issuehere .

如果我们深入研究源代码,li 中没有动态模板。在这里in this line .

新答案

我已经想出了解决这个问题的方法。经检查ng-bootstrap source codeapi documentation ,你可以看到ngb-carousel接受activeId输入。因此,我们可以创建一个方法,将单击的照片缩略图传递给 ngb-carousel .

最重要的部分是:

  1. 输入属性 [activeId]里面ngb-carousel

    <ngb-carousel class="myCarousel" [activeId]="activeSliderId"></ngb-carousel>

  2. 点击缩略图时创建点击事件

    <li class="thumbnail" (click)="cycleToSlide(photo)"></li>

  3. 点击缩略图时调用的方法

     cycleToSlide(photo) {
       this.activeSliderId = "ngb-slide-" + photo.id;
     }
    

您可以查看下面的示例。

export class PhotosComponent {
  activeSliderId;

  cycleToSlide(photo) {
    console.log(photo.id - 1);
    let slideId = photo.id - 1;

    this.activeSliderId = "ngb-slide-" + slideId;
  }

}
.carousel-thumbnail {
  list-style-type: none;
  padding: 0;
  margin: 1rem 0 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.carousel-thumbnail__item {
  cursor: pointer;
}

.carousel-thumbnail__img {
  width: 80px;
  height: 60px;
}
<ngb-carousel class="myCarousel" [activeId]="activeSliderId">
  <ng-template ngbSlide *ngFor="let photo of photos">
    <img class="slide__image" [src]="photo.src" alt="Random {{photo.name}} slide">
  </ng-template>
</ngb-carousel>

<ul class="carousel-thumbnail">
  <li class="carousel-thumbnail__item list-inline-item" *ngFor="let photo of photos" (click)="cycleToSlide(photo)">
    <a class="selected">
      <img class="carousel-thumbnail__img" [src]="photo.src">
    </a>
  </li>
</ul>

关于angular - ng-bootstrap 中轮播的图像缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143894/

相关文章:

html - 为什么即使导入依赖项后 mat-form-field 也不起作用?

angular - 组件间对象的两种方式数据绑定(bind)

angularjs - 字符串中的 Angular 2 绑定(bind)表达式(ng2-translate)

javascript - 使用 React.js 为自定义旋转木马制作动画

javascript - 试图阻止 Bootstrap 轮播在悬停时暂停

javascript - 使用 ngb-carousel 在单个 slider 页面中显示多个图像

angular - 依赖模型驱动表单时预先填充 ng-bootstrap typeahead 的问题

angular - 如何评估 if 语句中的 promise

reactjs - 无法使用react-native-snap-carousel

ng-bootstrap - 获取对嵌套在模态中的元素的引用