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

Angular实现点击列表项仅展示对应项额外信息的方法

问题原因

你当前用了全局唯一的hide变量控制所有产品的显隐状态,修改该变量会同步影响所有产品的显隐逻辑,所以会出现点击任意产品全部展开的问题。

修改方案

给每个产品单独分配显隐控制属性,独立控制自身的展开收起状态,调整后的代码如下:

调整后TS代码

export class Basic implements OnInit {
  products:any[];
  constructor() {
      this.products=[
      {
        name:"Mac Book Pro",
        price:"1000",
        color:"grey",
        // 新增单个产品的显隐控制属性,默认隐藏额外信息
        hide: true
      },
      {
        name:"iPhone",
        price:"700",
        color:"black",
        hide: true
      }
    ]
 }

  ngOnInit(): void {
  }
  
  // 接收点击的产品实例作为参数,单独修改该产品的显隐状态
  toggle(product: any){
    product.hide = !product.hide;
  }
}

调整后HTML代码

<div *ngFor="let x of products">
    <!-- 点击时把当前产品项传入toggle方法 -->
    <div (click)="toggle(x)">{{x.name}}</div>
    <!-- 绑定当前产品自身的hide属性 -->
    <div [hidden]="x.hide">
        {{x.price}}
        {{x.color}}
    </div>
</div>

实现逻辑

调整后每个产品的显隐状态完全由自身的hide属性控制,修改单个产品的状态不会对其他产品产生影响,即可实现点击对应产品仅展开自身额外信息的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:48:00