2016-06-01 16 views
1

*ngFor<tr>を使用して、コンポーネントテンプレートでダウンキャレットと右のキャレットフォントのすばらしいアイコンを繰り返し生成しています。私は1つを隠して、関連するクラスに設定したBooleanの値に基づいてもう一方を表示しています。しかし、Booleanの値を変更すると、ほかのアイコンもすべて非表示になります。私はちょうど私が他のものの代わりにクリックするものを隠したいと思う。テンプレート内でプロパティを設定し、両方の要素を取得してクラス内で非表示にする代わりにクラス内でプロパティを変更することで、テンプレート内でこれを行う方法はありますか?角度2のリストから特定の要素を非表示

コード:

<tr *ngFor="let obj of arr"> 
     <td id="{{obj.Parent}}" class='level{{obj.Level}}'>     
     <i *ngIf="showCollapse" (click)="collapseClicked($event)" class="fa fa-caret-down" aria-hidden="true"></i> 
     <I *ngIf="showExpand" (click)="expandClicked($event)" class="fa fa-caret-right" aria-hidden="true"></i> 
     {{obj.ATA}}</td> 
     <td>{{obj.Description}}</td> 
     <td>{{obj.MSI}}</td> 
</tr> 

答えて

0

あなたが展開または縮小されるべき項目角度を指示する必要があります。単一のアイテムでコンポーネントの単一のフラグを割り当てることはできません。

ではなく、試してみてください。

<tr *ngFor="let obj of arr"> 
     <td id="{{obj.Parent}}" class='level{{obj.Level}}'>     
     <i *ngIf="showCollapse === obj" (click)="collapseClicked(obj)" class="fa fa-caret-down" aria-hidden="true"></i> 
     <I *ngIf="showExpand === obj" (click)="expandClicked(obj)" class="fa fa-caret-right" aria-hidden="true"></i> 
     {{obj.ATA}}</td> 
     <td>{{obj.Description}}</td> 
     <td>{{obj.MSI}}</td> 
</tr> 
export class MyComponent { 
    arr = [{Parent: 'xxx', Level: 'yyy'}, {Parent: 'aaa', Level: 'bbb'},]; 
    showCollapse:any; 
    showExpand:any; 
    constructor() { 
    this.showCollapse = this.arr[1]; 
    this.showExpand = this.arr[0]; 
    } 
} 
+0

感謝。しかし、両方のアイコンがここで真と評価されるので、この場合両方のアイコンが表示されませんか?折りたたみアイコンをクリックすると、展開アイコンが表示され、折りたたみアイコンが非表示になり、一部のtrが非表示になります(逆も同様です)。 – Akhoy

+0

あなたがしたいことをあなたの質問から得ることができませんでした。私はちょうどあなたが単一の項目を切り替える方法を示すアプローチを指摘しようとしました。 –

+0

ありがとうございます。私は折りたたみ/展開のためのアイテムに割り当てる方法を得たが、私の質問は、他のすべてのアイコンを隠す代わりにクリックしたときにその特定の展開/折りたたみアイコンを隠すにはどうすればいいのだろうか? – Akhoy

関連する問題