2017-11-13 7 views
1

私は標準的なマットタブを持っていますが、それは配列のリストに基づいて動的にレンダリングされるという違いがあります。以下のようなもの:私は、タブがそのように選択されていない場合でも、どのように私はタブのインデックスを見つけるのですか閉じるアイコンを打つ可能性があるとして角度4材質タブのインデックスからのタブのインデックス

<mat-tab-group> 
        <mat-tab *ngFor="let tb of dynTabs"> 
         <ng-template mat-tab-label> 
           {{tb.label}}&nbsp;&nbsp;<mat-icon (click)="removeTab($event)">close</mat-icon> 
         </ng-template> 
         <!-- tab content area --> 
         <div>  
           my blaw blaw contents 
         </div> 
        </mat-tab> 
      </mat-tab-group> 

.TSは

 this.dynTabs.push(
      {"label": "Opportunities"}, 
    {"label": "Opportunities1"}, 
    {"label": "Opportunities2"} 
     ); 

removeTab(ev){ 
    console.log(ev) 
    } 

私の質問に次いであります閉じるアイコンがクリックされていますか?

答えて

1

あなたは次のように(click)ハンドラにtbを渡すことができます。

<mat-tab *ngFor="let tb of dynTabs"> 
    <ng-template mat-tab-label> 
     {{tb.label}}&nbsp;&nbsp;<mat-icon (click)="removeTab(tb)">close</mat-icon> 
    </ng-template> 
    <!-- tab content area --> 
    <div>  
     my blaw blaw contents 
    </div> 
</mat-tab> 

をあなたはまた、次のようにインデックスを渡すことができます。

<mat-tab *ngFor="let tb of dynTabs; let i=index"> 
    <ng-template mat-tab-label> 
     {{tb.label}}&nbsp;&nbsp;<mat-icon (click)="removeTab(i)">close</mat-icon> 
    </ng-template> 
    <!-- tab content area --> 
    <div>  
     my blaw blaw contents 
    </div> 
</mat-tab> 

あなたはまだ両方のケースで$eventを渡すことができます

<mat-tab *ngFor="let tb of dynTabs"> 
    <ng-template mat-tab-label> 
     {{tb.label}}&nbsp;&nbsp;<mat-icon (click)="removeTab(tb, $event)">close</mat-icon> 
    </ng-template> 
    <!-- tab content area --> 
    <div>  
     my blaw blaw contents 
    </div> 
</mat-tab> 
+0

タブとは何ですか? removeTabに渡されますか? – Vik

+0

ああ、申し訳ありません。それは 'ngFor'から' tb'でなければなりません。私の投稿を編集しました。 –

+0

hmm as tbにはインデックスストアがないので、インデックスベースのソリューションを使用する必要があります。 let i = indexのインデックスは何ですか? – Vik

関連する問題