javascript - 在 ngFor 循环中仅切换一个特定面板

标签 javascript angular typescript

您好,我想切换一个特定的面板,但如果我点击按钮,其他对象的面板将被打开。我怎样才能打开点击的面板?

toggle.component.ts

 opened:Boolean=false;
 toggle () {

    this.opened = !this.opened;
  }

HTML

<div class="main" *ngFor="let x of data; let i=index;">
<footer>

  <div class="icons">
  <span id="{{item.id}}" (click)="toggle()">6<i class="fa fa-users {{i}}" ></i></span>
  <span >6<i class="glyphicon glyphicon-picture"></i></span>
  <span >6<i class="glyphicon glyphicon-tag"></i></span>
  <div class="iconsRight pull-right">
  <span >EXIF<i class="glyphicon glyphicon-info-sign"></i></span>
  <span ><i class="fa fa-map-marker"></i></span>
  <span ><i class="fa fa-share-alt-square"></i></span>
  </div>
  </div>

</footer>

<div class="togglePanel{{item.id}}" *ngIf="opened" >
  <hr/>
  <ul class="toggleWrapper">
    <li>YES</li>
    <hr/>
    <li>YES</li>
    <hr/>
    <li>YES</li>
    <hr/>
    <li>YES</li>

  </ul>
</div>
 </div>

enter image description here

最佳答案

您需要保存单个面板的状态。目前您只需设置一个变量来切换所有面板。

在您的 toggle.component.ts 中,添加一个变量来存储每个项目的状态:

togglePanel: any = {};

然后,将您的 html 更改为以下内容:

<div class="main" *ngFor="let x of data; let i=index;">
    <footer>
        <div class="commentAgent">Text des Bewerters, der die Bearbeitung dieses Bildes vorgenommen hat</div>
        <div class="icons">
            <span id="{{item.id}}" (click)="togglePanel[i] = !togglePanel[i]">6<i class="fa fa-users {{i}}" ></i></span>
            <span>6<i class="glyphicon glyphicon-picture"></i></span>
            <span>6<i class="glyphicon glyphicon-tag"></i></span>
            <div class="iconsRight pull-right">
                <span>EXIF<i class="glyphicon glyphicon-info-sign"></i>/span>
                <span><i class="fa fa-map-marker"></i></span>
                <span><i class="fa fa-share-alt-square"></i></span>
            </div>
        </div>
    </footer>
    <div class="togglePanel{{item.id}}" *ngIf="togglePanel[i]">
        <hr/>
        <ul class="toggleWrapper">
            <li>YES</li>
            <hr/>
            <li>YES</li>
            <hr/>
            <li>YES</li>
            <hr/>
            <li>YES</li>
        </ul>
    </div>
</div>

此外,在这种方法中,您不需要toggle() 方法和变量opened

关于javascript - 在 ngFor 循环中仅切换一个特定面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45919103/

相关文章:

javascript - jQuery 查找所有类在父类之下的元素,即使在子元素中也是如此

angular - 在 Angular2 的 Reactives FormModule 中禁用 FormGroup 控件

javascript - 如何在另一个 Observable 发出时停止发出的值?

angular - 如何在 Angular 2 中创建可重用的动画

javascript - 在 NestJS 中添加 header HttpRequest

javascript - 什么是 Angular 中的 createEmbeddedView() 上下文参数

javascript - 观看模板文件并将它们复制到 dist/文件夹

javascript - 将二维数组从 javascript 传递到 php 但大小减小

javascript - 如何在 react-CKEditor 组件中固定图像的宽度和高度?

javascript - 从 ECMA6 到 ECMA5 的跟踪器转换不起作用