2017-12-29 28 views
-1

私はテーブルを持っています。私はいくつかの行をクリックすると、その行のいくつかの情報を使って別の行を表示したいと思います。私はそれを切り替えることができるようにする方法を知っていないだけでなく、複数のサブ行を開くことができるようにする。どうにか私は行IDに基づいてトグルを有効にする必要がありますが、これは私が思いついたものですが、必要なように実際には機能しません。IDに基づいて行を切り替えます - 角度4

<ng-container *ngFor=" let fields of mf.data; let i = index"> 
    <tr> 
    <td (click)="expandCompareRow(i)">Something</td> 
    <td>Something</td> 
    </tr> 

    <tr *ngIf="compareRowExpanded == i && expandedRow"> 
    <td>Something</td> 
    <td>Something</td> 
    </tr> 
    </ng-container> 

    TS: 
    expandCompareRow(index) { 
     this.compareRowExpanded = index; 
     this.expandedRow = !this.expandedRow; 
     } 

これは、行を開きますが、私は別のものを開きたいとき、それは最初に既に開かれている行を閉じ、その後、私はこの行を開くために、再度クリックする必要があります。

+0

せずにそれを行うことができます

<ng-container *ngFor=" let fields of mf.data; let i = index"> <tr> <td (click)="expandCompareRow(fileds)">Something</td> <td>Something</td> </tr> <tr *ngIf="fields.expanded"> <td>Something</td> <td>Something</td> </tr> </ng-container> 

typescriptですコード

expandCompareRow(fields) { fields.expanded = ! fields.expanded; } 

以下のようにオブジェクトにexpandedプロパティを使用し、それを切り替えますあなたのコンポーネント内で 'compareRowExpanded'を実行すれば、明らかに1つの行だけを展開することができます。各行を展開するかどうかを指定します。行オブジェクトに 'expanded'フラグを追加してください。そして、 '* ngIf =" row.expanded "と'(click)= "を使用してください。row.expanded =!row.expanded" ' –

答えて

2

お持ちの場合はあなたもこの方法

<td (click)="fields.expanded = ! fields.expanded">Something</td> 
関連する問題