首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ngFor向一行添加两个元素,然后创建一个新行

使用ngFor向一行添加两个元素,然后创建一个新行
EN

Stack Overflow用户
提问于 2018-11-26 00:40:52
回答 1查看 332关注 0票数 1

因此,我已经尝试了一段时间,使用*ngFor迭代一个对象数组,其中两个元素放置在一行中。在将每个组件集添加到一行之后,应该生成一个新行,以此类推。

到目前为止,我所做的尝试如下:

代码语言:javascript
复制
<div class="row" *ngFor="let prod of products; let i = index; let even = even">
<span *ngIf="even">
    <div class="col-md-6 offset-3">
        <div>
            <img src="{{ prod.imagePath }}" alt="{{ prod.name }}" class="img-responsive" style="max-height: 150px; max-width: 150px;">
        </div>
        <div>
            <h2>{{ prod.name }}</h2>
        </div>
        <div>
            <h3>Price: {{ prod.price }}</h3>
        </div>
    </div>
    <div class="col-md-6 offset-3">
        <div>
            <img src="{{ products[i+1].imagePath }}" alt="{{ products[i+1].name }}" class="img-responsive" style="max-height: 150px; max-width: 150px;">
        </div>
        <div>
            <h2>{{ products[i+1].name }}</h2>
        </div>
        <div>
            <h3>Price: {{ products[i+1].price }}</h3>
        </div>
    </div>
</span>

我已经核对了我在这里能找到的所有相关问题,但似乎没有一个能解决我的问题。

在这一分钟,每个元素都会进入它自己的行,而不管我做什么。

我试图更改每个元素的容器大小,但都没有效果。

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-26 01:30:05

最好的方法是将产品数组的结构转换为数组数组。然后,您想要的结构是很容易循环和打印。

您可以使用pipe进行转换。例如:

代码语言:javascript
复制
     @Pipe({
       name: 'updateRows'
     })
     export class UpdateRowsPipe implements PipeTransform {

      transform<T>(value: T[], perRow: number): T[][] {
          let rows: T[][] = [];
          for (let i = 0; i < value.length; i += perRow) {
            rows.push(value.slice(i, i + perRow))
        }
        return rows;
    }

  }

然后在有*ngFor的地方使用它:

代码语言:javascript
复制
    <div class="row" *ngFor="let row of products | updateRows:2">
        <div *ngFor="let product of row">
            <div class="col-md-6 offset-3">
                 <div>
                <img src="{{ product.imagePath }}" alt="{{ product.name }}" class="img-responsive" style="max-height: 150px; max-width: 150px;">
            </div>
            <div>
                <h2>{{ product.name }}</h2>
            </div>
            <div>
                <h3>Price: {{ product.price }}</h3>
            </div>
        </div>
          <!-- Do some more fun things here --> 
     </div>   

</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53473463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档