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

Angular新手求助:手风琴组件点击单个项触发全部展开/收起的修复方法

解决Angular手风琴组件全部展开/收起的问题

嘿,我懂你的困扰!现在所有FAQ条目共用同一个showDetail变量,所以一点击就全部联动展开或收起了对吧?咱们只需要给每个FAQ项单独维护自己的展开状态,就能实现点击单个条目独立控制的手风琴效果啦。

第一步:修改TypeScript代码

首先,给每个FAQ对象添加一个isExpanded属性来记录自身的展开状态,同时简化toggle逻辑:

import { Component, OnInit } from '@angular/core';
import {faChevronUp, faChevronDown, IconDefinition} from '@fortawesome/free-solid-svg-icons';

@Component({
  selector: 'app-jobs-faq',
  templateUrl: './jobs-faq.component.html',
  styleUrls: ['./jobs-faq.component.scss']
})
export class JobsFaqComponent implements OnInit {
  faChevronUp: IconDefinition = faChevronUp;
  faChevronDown: IconDefinition = faChevronDown;
  
  faqs = [
    { id: 1, title: 'faq1', content: 'content1', isExpanded: false },
    { id: 2, title: 'faq2', content: 'content2', isExpanded: false },
    { id: 3, title: 'faq3', content: 'content3', isExpanded: false }
  ];

  constructor() { }

  toggleDetail(faq: any): void {
    // 只切换当前点击的FAQ项的展开状态
    faq.isExpanded = !faq.isExpanded;
  }

  ngOnInit() { }
}

第二步:修改HTML模板

接下来调整模板,让每个条目根据自身的isExpanded状态来控制内容显示和图标切换:

<div class="faq-item-container">
  <h1 class="mt-1 mb-5"><strong>Frequently Asked Questions</strong></h1>
  <div class="row" (click)="toggleDetail(faq)" *ngFor= "let faq of faqs">
    <div class="col my-2">
      <h3> 
        {{faq.title}} 
        <a><fa-icon [icon]="faq.isExpanded ? faChevronUp : faChevronDown" class="float-right"></fa-icon></a>
      </h3>
    </div>
    <div class="col-12" *ngIf="faq.isExpanded">
      <div class="faq-detail-container mt-1">
        <div class="col-12">
          <p><small> {{faq.content}} </small></p>
        </div>
      </div>
    </div>
  </div>
</div>

为什么这样改?

  • 每个FAQ项都拥有了独立的isExpanded状态,点击时只会切换当前项的状态,完全不会影响其他条目
  • 图标直接通过三元表达式根据当前项的状态动态切换,省去了单独的toggleIcon函数,逻辑更简洁直观

这样调整后,你的手风琴组件就能正常工作啦,点击单个FAQ项只会展开/收起自己的内容~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:27:31