定格由ngfor生成的dom元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定格由ngfor生成的dom元素相关的知识,希望对你有一定的参考价值。

背景:所以我从后端获取一些数据,我将其作为数组存储在我的Angular前端。现在我试图在模板上显示这些元素(它们是产品)中的每一个。我基本上想要实现的是用户可以浏览的页面上的产品。

问题:问题是ngfor只是在模板的垂直线上一个接一个地绘制元素。我想要的是能够应用一般样式设置(可能在托管ngfor的父元素?),因此元素从页面的左上角到根据视口的1到X个元素的行的右上角width,然后在以下行中继续,直到原始数组中没有任何内容。 PS。我尝试在父元素中使用css grid和flexbox,但它们只是被模板忽略了。

如果有人能指出我能达到预期结果的方向,我将不胜感激。

我的模板代码如下:

<div id="backGroundImage">
  <div id="salesPageContainer">
    <div id="saleItemsContainer" >
      <div *ngFor="let saleItem of saleItems" id="itemContainer" >
        <p id="itemName">{{ saleItem.itemName }}</p>
        <p id="itemPrice">{{ saleItem.itemPrice }}</p>
        <img [src]="imageUrl + saleItem.imageID" alt="" id="itemImage" />
      </div>
    </div>
  </div>
</div>
答案

在这里查看示例实现WORKING STACKBLITZ

如果你的应用程序中有引导程序,请添加class="d-flex flex-wrap" like below

<div id="backGroundImage">
  <div id="salesPageContainer">
    <div id="saleItemsContainer" class="d-flex flex-wrap">
      <div *ngFor="let saleItem of saleItems" id="itemContainer" >
        <p id="itemName">{{ saleItem.itemName }}</p>
        <p id="itemPrice">{{ saleItem.itemPrice }}</p>
        <img [src]="imageUrl + saleItem.imageID" alt="" id="itemImage" />
      </div>
    </div>
  </div>
</div>

在普通css中将css display: flex; flex-wrap: wrap;应用于id="saleItemsContainer"

<div id="backGroundImage">
  <div id="salesPageContainer">
    <div id="saleItemsContainer">
      <div *ngFor="let saleItem of saleItems" id="itemContainer" >
        <p id="itemName">{{ saleItem.itemName }}</p>
        <p id="itemPrice">{{ saleItem.itemPrice }}</p>
        <img [src]="imageUrl + saleItem.imageID" alt="" id="itemImage" />
      </div>
    </div>
  </div>
</div>

使用CSS网格

<div id="backGroundImage">
  <div id="salesPageContainer">
    <div id="saleItemsContainer">
      <div *ngFor="let saleItem of saleItems" id="itemContainer" >
        <p id="itemName">{{ saleItem.itemName }}</p>
        <p id="itemPrice">{{ saleItem.itemPrice }}</p>
        <img [src]="imageUrl + saleItem.imageID" alt="" id="itemImage" />
      </div>
    </div>
  </div>
</div>

将css添加到saleItemsContainer

#saleItemsContainer {
  display: grid;
  grid-column-gap: 0.5rem;
  grid-row-gap: 0.4rem;
  grid-template-columns: auto auto auto;
}

以上是关于定格由ngfor生成的dom元素的主要内容,如果未能解决你的问题,请参考以下文章

从由外部脚本生成的元素中删除 DOM 元素

jquery 对象的 heightinnerHeightouterHeight 的区别以及DOM 元素的 clientHeightoffsetHeightscrollHeightoffset(代码片段

如何获取由 querySelectorAll() 方法 (javascript) 生成的 DOM 数组的每个元素的索引?

ngIf和ngFor共用

实用代码片段将json数据绑定到html元素 (转)

JavaScript单行代码,也就是代码片段