You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 10中使用*ngFor循环渲染图片时flex-grow属性失效问题咨询

问题根因

你使用*ngFor时给每个图片外层额外包裹了一层div,这层div才是.flex-container的直接子元素,你将flex属性绑定在内部的img标签上,flex布局不会识别非直接子元素的flex属性,因此样式失效。

解决方案

方案1:移除多余外层div(推荐,和硬编码结构完全一致)

直接将*ngFor指令绑定在img标签上,无需额外嵌套:

<div class="flex-container">
    <img *ngFor="let item of testFlexItems; let i = index" 
         [src]="item" 
         class="flex-item" 
         [style.flex]="getFlexStyle(i)"/>
</div>

方案2:保留外层div,将flex属性绑定到外层元素

如果业务需要保留外层div(比如要添加额外逻辑、事件绑定等),则将flex属性移到*ngFor所在的div上,同时补充对应样式:

<div class="flex-container">
    <div *ngFor="let item of testFlexItems; let i = index"
         [style.flex]="getFlexStyle(i)"
         class="flex-item-wrapper">
        <img [src]="item" class="flex-item"/>
    </div>
</div>

补充对应的css样式:

.flex-item-wrapper {
  height: 150px;
}
.flex-item {
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}

两种方案任选其一即可实现和硬编码完全一致的两端对齐填充效果。

内容的提问来源于stack exchange,提问作者Shoom Kloom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:54:06