Angular 2:折叠多个元素

时间:2016-08-03 12:38:43

标签: angular collapse angular-template

我在内容元素崩溃时遇到问题。当我按下按钮显示所有内容都显示但不只是这个内容的一个元素。

  

我遵循此示例Plunker

这是我的html的一部分:

         <div *ngFor="#elem of apps">
               <div  class="col-md-5">
                  <div class="panel-heading">
                     <strong> {{elem.name}}</strong> on {{elem.host}} 
                  </div
                  <button type="button" (click)="isCollapsedContent= !isCollapsedContent">
               </div>
           </div>


           <div [collapse]="isCollapsedContent">
              <table class="table table-hover">
                   <thead>
                     <tr class="header">
                        <td>Property</td>
                        <td>Value</td>
                     </tr>
                   </thead>
                   <tbody>
                     <tr>
                        <td>app</td>
                         <td>{{elem.app}}</td>

                        <td>name</td>
                         <td>{{elem.name}}</td>

                        <td>host</td>
                         <td>{{elem.host}}</td>
                     </tr>
                   </tbody>
              </table>
           </div

我在API中添加了额外的布尔属性,名为show default set false。

[
{"app":"database_1",
 "host":"my_host1",
 "name":"name1",
 "show": false
},
{"app":"database_2",
 "host":"my_host2",
 "name":"name2",
 "show": false
},
{"app":"database_3",
 "host":"my_host3",
 "name":"name3",
 "show": false
},
]

如何只显示/隐藏一个元素?我可以将属性添加到isCollapsedContent,例如:

<div [collapse]="isCollapsedContent(elem.show)">

1 个答案:

答案 0 :(得分:5)

使用ngIf测试elem.show是否为真。

  <div *ngFor="#elem of apps">
    <div  class="col-md-5">
      <div class="panel-heading">
          <strong> {{elem.name}}</strong> on {{elem.host}} 
      </div>
      <button type="button" (click)="elem.show = !elem.show"></button>
    </div>

    <table class="table table-hover" *ngIf="elem.show">
      <thead>
        <td>app</td>
        <td>Name</td>
        <td>Host</td>
      </thead>
      <tbody>
        <tr>
          <td >{{elem.app}}</td>
          <td >{{elem.name}}</td>
          <td >{{elem.host}}</td>
        </tr>
      </tbody>
    </table>
  </div>