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

如何在Angular的*ngFor循环中添加变量值作为类名?

在Angular的*ngFor中动态添加变量值作为类名的解决方法

我来帮你搞定这个问题~你之前的写法是因为ngClass的语法用错了,所以没法生效。下面给你几种可行的实现方式,你可以根据需求选择:

方法1:使用ngClass的计算属性对象语法

这是最推荐的方式,Angular支持在ngClass的对象中用计算属性(用方括号包裹变量)来动态设置类名。只要把变量作为键,值设为true(或者判断变量是否存在的条件),就能把变量值作为类名添加:

<ul class="cart-card">
  <li 
    *ngFor="let size of sizes" 
    class="cart-card--content" 
    [ngClass]="{'active': activeSize === size, [size]: true}"
  >
    <div class="cc-content-desc">{{size}}</div>
    <div class="cc-content-image-xs"></div>
    <div class="cc-content-desc1">L+W+H=36</div>
  </li>
</ul>

解释:

  • {'active': activeSize === size}:保持你原本的逻辑,当activeSize等于当前循环的size时,添加active类
  • [size]: true:这里的[size]是计算属性,会把size变量的实际值(比如S、M、L)作为类名,true表示始终添加这个类(如果担心size为空,可以改成[size]: !!size,确保只有有效值才添加)

方法2:静态类拼接动态变量

如果不需要复杂的条件判断,也可以直接在原生class属性里拼接变量,再配合ngClass处理条件类:

<ul class="cart-card">
  <li 
    *ngFor="let size of sizes" 
    class="cart-card--content {{size}}"
    [ngClass]="{'active': activeSize === size}"
  >
    <div class="cc-content-desc">{{size}}</div>
    <div class="cc-content-image-xs"></div>
    <div class="cc-content-desc1">L+W+H=36</div>
  </li>
</ul>

方法3:使用ngClass的数组语法

把静态类、动态类、条件类都放进数组里,Angular会自动把数组中的真值项作为类名添加:

<ul class="cart-card">
  <li 
    *ngFor="let size of sizes" 
    [ngClass]="['cart-card--content', size, activeSize === size ? 'active' : '' ]"
  >
    <div class="cc-content-desc">{{size}}</div>
    <div class="cc-content-image-xs"></div>
    <div class="cc-content-desc1">L+W+H=36</div>
  </li>
</ul>

为什么你之前的写法不生效?

你之前写的['size'] : size是错误的语法:ngClass的对象语法要求键是类名(字符串或计算属性),值是布尔值来控制是否添加该类,不能用数组作为键,所以才无法生效。

内容的提问来源于stack exchange,提问作者3gwebtrain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:57:23