2016-12-03 9 views
0

私のAngular2アプリにはMDLというスタイルのタブがあります。そして私が必要とするのは、タブにクラスがあるかどうかをチェックし、それがクリックでそのクラスを追加しない場合です。タブのクラスを確認して追加するAngular2

マイcomponent.html

<div class="releases-list-component"> 

<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect"> 

    <div class="mdl-tabs__tab-bar"> 
     <a routerLink="albums" class="mdl-tabs__tab" (click)="addClass()">Albums</a> 
     <a routerLink="splits" class="mdl-tabs__tab" (click)="addClass()">Splits</a> 
     <a routerLink="tributes" class="mdl-tabs__tab" (click)="addClass()">Tributes</a> 
    </div> 

</div> 

<router-outlet></router-outlet> 

マイcomponent.tsaddClass関数内で上記のコメントで

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'releases-details', 
    templateUrl: 'app/releases/releases-details.component.html' 
}) 

export class ReleasesDetailsComponent { 

    className: string = ""; 

    addClass(){ 
     //??? this.hasClass("is-active")?this.removeClass("is-active"):this.addClass("is-active"); 
    } 

} 

ルック。あなたがのクラスを追加したいと思います場所によって

+0

あなたは現在アクティブなタブを強調表示しますか? – micronyks

答えて

0

あなたはrouterLinkActiveディレクティブを活用すべきです。 ルータ自体は、現在のアクティブなルートに基づいて、is-activeクラスを追加して削除します。 これを使用する場合は、もうclickイベントを使用する必要はありません。

<div class="mdl-tabs__tab-bar"> 
     <a routerLink="albums" routerLinkActive="is-active" class="mdl-tabs__tab">Albums</a> 
     <a routerLink="splits" routerLinkActive="is-active" class="mdl-tabs__tab" >Splits</a> 
     <a routerLink="tributes" routerLinkActive="is-active" class="mdl-tabs__tab" >Tributes</a> 
    </div> 
+0

それは私の必要としているようです。しかし、別の問題がクリック上のコードに適用されるクラス「アクティブである」ということです(私はクロームコンソール内のタブを検査)が、タブは、クラスを持っている場合に適用されることになったスタイルのない「見える化」はありません"アクティブです"。何が問題なのか知っていますか? –

+0

私はあなたの質問を正しく取得しません。正しい要素を探して、うまくいけばスタイルのビジュアライゼーションがそこにあるはずです。 – micronyks

+0

私は、コードに適用されるスタイル「であるアクティブ」を意味しますが、そのスタイルが暗示するように、視覚的にそのスタイルを持つタブが飾られていません( - 同じアプリ内の他の要素にチェックしたスタイルは、100%の作業です)。私はあなたの問題を理解するための –

0

は、アクティブあなたはそれを変更することができます:あなたはAngular2ルーターを使用している場合

<div class="releases-list-component" [class.is-active]='isActive'> 


export class ReleasesDetailsComponent { 

    className: string = ""; 
    isActive = false; 
    addClass(){ 

     if(isActive){ 

      isActive = false 
     }else{ 

     isActive = true 

     } 
    } 

} 
関連する問題