如何将所选图像设置为在 Angular 的引导轮播中显示的第一张图像?

约瑟夫

我创建了一个小的 tuto 代码,其中有一张卡片列表。在这些卡片上,我有一个点击事件,它传递这张卡片的索引,稍后我将使用它来设置要在轮播中显示的第一个图像。该索引通过与创建的组件共享的服务过去。

现在这个索引已经成功过去了,当我在轮播组件中收到它时,将它放入<ngb-carousel [activeId]="activeIndex">,如文档中所述

 /**
 * The slide id that should be displayed **initially**.
 *
 * For subsequent interactions use methods `select()`, `next()`, etc. and the `(slide)` output.
 */
 activeId: string;

但是,我所做的没有任何效果,因为轮播仍然每次都向我显示第一张图像。我错过了什么吗?

在这里你可以找到源代码:https : //github.com/agentjoseph007/modal-carousel

任何帮助都感激不尽。

阿兹杜德

尝试在 carousel 构造函数中处理图像,因为它是您刚移动的数组。您选择索引,然后将与该索引匹配的幻灯片移动到第一个位置。我建议在您的轮播模板中使用 *ngFor。

在 carousel.component.html 中

<ngb-carousel (slide)="onSlide($event)">
  <ng-container *ngFor="let slide of slides; let index = index">
    <ng-template ngbSlide [id]="index">
      <div class="picsum-img-wrapper">
        <img [src]="slide.image" [alt]="slide.alt">
      </div>
      <div class="carousel-caption">
        <h3>{{slide.label}}</h3>
        <p>{{slide.content}}</p>
      </div>
    </ng-template>
  </ng-container>
</ngb-carousel>

也许社区可能对如何处理幻灯片有其他建议,但我向您建议此代码和 carousel.component.ts

  photos = [944, 1011, 984].map((n) => `https://picsum.photos/id/${n}/900/500`);
  slides = [
    {
      index: 0,
      image: this.photos[0],
      label: 'First slide label',
      content: 'Nulla vitae elit libero, a pharetra augue mollis interdum.',
      alt: 'my first slide image'
    },
    {
      index: 1,
      image: this.photos[1],
      label: 'Second slide label',
      content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
      alt: 'my first slide image'
    },
    {
      index: 2,
      image: this.photos[2],
      label: 'Third slide label',
      content: 'Praesent commodo cursus magna, vel scelerisque nisl consectetur.',
      alt: 'my first slide image'
    }
  ];

  ...

  constructor(private imageHandlerService: ImageHandlerService) {
    console.log('CarouselComponent');
    console.log(this.imageHandlerService.selectedIndex);
    this.slides.forEach((element, i) => {
      if (element.index === this.imageHandlerService.selectedIndex) {
        this.slides.splice(i, 1);
        this.slides.unshift(element);
      }
    });
  }

希望能帮助到你 ;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Delphi DrawGrid仅显示第一张图像

Laravel 5.2-显示数据库中的第一张图像

FlexSlider轮播在第一张幻灯片中滑动所有图像-WordPress

第二张Mat图像显示了第一张Mat图像的结果

视图中的Django外键 - 获取为列表中的每个用户显示的第一张图像

如何根据 id 选择第一张图像并在(显示)视图中显示?

选择第一张图像,而不是随机图像

我怎样才能只显示来自 json 数据的图像 [] 的第一张图像?

画布仅显示在滑块的第一张图像上或连接到每个图像的底部

更改GridView的行时,它会显示第一张图像

带有CSS的滑块仅显示第一张图像

如何使用Angular将第一张表的数据复制到第二张表?

在dockerfile中完成打包后如何删除第一张图像?

如何删除第一张和最后一张图像的左右空间?

如何在MVC应用程序中显示文件夹中的任何图像或第一张图像

从foreach循环中仅获取刀片模板中的第一张图像

增加图形魔术师中第一张图像的长度

更改标签栏 SWIFT 中第一张图像的 alpha

CSS仅影响行中的第一张图像

仅循环通过Liquid中的第一张图像

ExcelJS - 如何将第一张工作表设置为活动状态

每次我单击按钮时图像都变淡,新图像开始显示在第一张图像的顶部吗?

将第一张卡片显示为bxSlider中第二张幻灯片的一半

如何获得引导轮播下一张图片src?

在一个引导轮播中显示多个图像时出错

每当调整窗口大小时如何将文本保留在第一张图像后面?

如何在Django的图像列表中找到第一张图像

如何将图像设置为div

如何将海龟设置为图像