2017-10-03 17 views
1

ボタンをクリックしたときにブール値に基づいてボタンの色、アイコン、テキストを変更したいと思います。私がアクティブなボタンをクリックすると、それは非アクティブに変わり、色はbtn-suceessからbtn-dangerに変わり、fa-banからfa-checkに変わるはずです。今、私はテキストのみを変更することができていますが、現在値がで更新取得されていないボタンの色、アイコン、テキストを角度2に変更します

deactivate(user){ 
    this.user.active = true; 
    this.userService.userStatus(this.user).subscribe(
    user => { 
     console.log(user); 
    }, 
    err => { 
    console.log('err:', err); 
    } 
); 
    }; 

activate(user){ 
this.user.active = false; 
this.userService.userStatus(this.user).subscribe(
    user => { 
    console.log(user); 
    }, 
    err => { 
    console.log('err:', err); 
    } 
); 
}; 

click() { 
    if (this.user.active) { 
     this.user.active = false; 
     this.text = "Active"; 
    } else { 
     this.user.active = true; 
     this.text = "Deactive"; 
    } 
} 

<button [hidden]= "user.active" [ngClass]="{ 'btn-danger': user.active, 'btn-success': !user.active}" (click) ="click()"> 
    <i [ngClass]="{'fa-ban': user.active, 'fa-check': !user.active}" class="fa"> </i> 
    {{ text }} 
</button> 

はその後.TSに私は2つのメソッドを持っているファイルと私はこのような一つの方法を追加しましたdbやアイコンやボタンの色は変更されません。

答えて

0

あなたはそれについて間違った道を進みました。テンプレートにはそのボタンが1つだけ含まれている必要があります。私は直接DOM要素にアクセスするための$ event.targetを使用していないことを

export class MyComponent { 
    user = { active: true }; 
    text = "Deactive"; 

    click() { 
     if (this.user.active) { 
      this.user.active = false; 
      this.text = "Active"; 
     } else { 
      this.user.active = true; 
      this.text = "Deactive"; 
     } 
    } 

注:

<button [ngClass]="{'btn-danger':user.active, 'btn-success':!user.active}" 
     (click)="click()"> 
    <i [ngClass]="{'fa-ban':user.active, 'fa-check':!user.active}" class="fa"> </i> 
    {{text}} 
</button> 

そして、このようなコンポーネント何か:それはこのようなものでなければなりません。 Angularを使用する場合は、避けるようにしてください。私の例では、ボタンとアイコンのテキストとクラスを角度を使って変更する方法を示します。

これがどのように機能するか教えてください。更新OPによる

編集:私は、実施例でPlunkerを作成しました

。明らかにボタンが無効になっている(意味をなさない)ときに、(クリック)イベントが発生しないようにするため、ボタンの[disabled]を削除する必要がありました。 しかし、それはまだ角度の方法で色やテキストを変更する方法を、うまく示しています

https://plnkr.co/edit/VxxoUeSHrP0I8lyMiVNK

だけでリンクをクリックして、上部のバーに黒い「実行」ボタンを押してください。 TSファイル内

+0

おかげで、私は変更されている一方で、HTML

<button [hidden]= "user.active == false" [ngClass]="(state == true) ? 'btn-success':'btn-danger'" (click) ="activation(user, $event.target, 'Deactive')"> <i [ngClass]="(state == true) ? 'fa fa-ban':'fa fa-check'"> </i> Active </button> 

でそれを確認

clickActive:Boolean = false; 

のための変数を追加状態を変更することを忘れないでください。あなたが言ったように、出力を得ることはできません。私は私の記事を編集しました。 –

+0

@AmitKumar Plunkerの例を使って作業しましたか?もしそうなら、私の答えを受け入れてください。 – HammerNL

0

クリックボタン

this.clickActive = !this.clickActive; 
関連する問題