【问题标题】:how to show all image data on carousel using ngFor angular 7如何使用 ngFor angular 7 在轮播上显示所有图像数据
【发布时间】:2019-07-29 15:53:05
【问题描述】:

我有轮播,可以在一次幻灯片上显示 3 张图片。在 ts 文件上,我已经从 htb 获取图像。代码如下。无论如何,当我 console.log 图像时,它会显示所有图像数据(4 图像)。

this.htbservicesService.getHtb()
            .subscribe( 
                htbs => {
                   this.htbs = htbs

                    for(var i = 0; i < htbs.length; i++) {
                    var obj = htbs[i];
                    console.log(obj.image);

                    this.imageObject = [{
                        image: obj.image,
                        thumbImage: obj.image   
                     }];
                    }       
              },
                error => reject(error),
                () => resolve("good")
            );
        });

并且在 html 文件上仅显示来自已循环图像的 1 个图像。显示图像的html如下

<ng-image-slider [images]="imageObject" #nav></ng-image-slider>

我曾尝试像这样在视图页面 (html) 上循环。但什么也没显示。

 <div *ngFor="let htb of imageObject">
    <ng-image-slider [images]="htb" #nav></ng-image-slider>
 <div> 

问题是,如何在 carrousel 上显示所有图像?我错过了什么或者我应该怎么做?

【问题讨论】:

  • Soni,[images] 必须是一个对象数组,每个对象都有一个属性“image”或“video”,所以你必须有一个唯一的&lt;ng-image-sider&gt; 但[images] 必须是@ 987654325@(你可以使用“map”来转换你的数组)
  • 你能告诉我如何映射数组吗?

标签: angular carousel ngfor


【解决方案1】:

当您启动 http 调用以检索图像时,在我看来,您似乎已经接收到包含图像的数据结构数组。你可以这样实现它:

unsubscribe: Subject<boolean> = new Subject();
images = [];

ngOnInit() {
this.htbservicesService.getHtb()
.pipe(takeUntil(this.unsubscribe)) // unsubscribes your observable on destroy of the component to prevent memory leak
            .subscribe( 
                htbs => {
                   this.images = htbs;                   }
            );
        });
}

ngOnDestroy() {
  this.unsubscribe.next(true);
  this.unsubscribe.complete();
}

htbs 需要是一个数据结构,看起来像这样:

    {
        image: 'assets/img/slider/1.jpg',
        thumbImage: 'assets/img/slider/1_min.jpeg',
        alt: 'alt of image',
        title: 'title of image'
    }

在你的 html 模板中:

<ng-image-slider *ngIf="images.length > 0" [images]="images" #nav></ng-image-slider>

您可以使用 *ngIf 仅在图像超过 0 时显示。

亲切的问候

【讨论】:

  • 当我使用console.log时,是的,它显示了所有的数据数组值
  • @sagat,你确定吗?我认为这个轮播需要一个对象数组,例如[{image:'uno.jpg},{image:'dos.jpg}]...参见文档npmjs.com/package/ng-image-slider
  • 是的。这个轮播需要一个这样的数组。这就是为什么我上面的代码使用循环图像
  • 我编辑了答案。抱歉之前没有检查数据结构。如果它仍然不起作用,我可能会为你添加一个 stackblitz。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2017-11-20
  • 1970-01-01
  • 2020-09-13
  • 2023-03-13
  • 2018-04-24
相关资源
最近更新 更多