2017-01-25 7 views
3

私はオブジェクトのグループをループしている状況があります。オブジェクトごとにボタンをクリックするとisActiveの変数をtrueに切り替える必要がありますが、これをループ内のその1つの要素に固有のものでなければなりません。現在は、isActiveがコンポーネント変数であるため、すべての要素をアクティブにすることしかできません。ngForループの要素の値を変更します

私はそれが代わりに各項目の状態を保持するクラスメンバを導入するhttps://plnkr.co/edit/biOfbIjMxjOMUMFWOgyY?p=preview

答えて

5

を助けるかもしれない期待してplunkrを作成し、あなたはそれがアイテム自体にバインド保持することができます。次のようにテンプレートを変更します。

<ul> 
    <li *ngFor="let item of list" [ngClass]="{'is-active': item.isActive}"> 
     <h2>{{ item.title }}</h2> 
     <p>{{ item.body }}</p> 
     <button (click)="item.isActive = !item.isActive">Toggle active</button> 

     <div class="active" *ngIf="item.isActive"> 
     <small>This should show for only this object in the loop</small> 
     </div> 
    </li> 
    </ul> 

追加設定は不要です。

+1

これは完璧でした、ありがとう!私は実例を見たい人のためにplunkrを更新しましたhttps://plnkr.co/edit/biOfbIjMxjOMUMFWOgyY?p=preview – Daimz

+0

好奇心の喪失から、これはMVVMの例ですか?たとえば、モデルにデータが含まれていて、ViewModelのために追加の変数を追加して、状態を把握し、問題のアイテムにバインドするという同様の問題がありました –

関連する問題