2016-10-12 15 views
5

To jest to, co mam:przypisać styl z * ngIf oceny w angular2

home.html

<li *ngFor="let item of myList"> 
     <div *ngIf="item.messageText === {{myVar}}" class="bordered">{{item.messageText}}</div> 
     <div *ngIf="item.messageText !== {{myVar}}" class="greyedOut">{{item.messageText}}</div> 
</li> 

w home.ts Mam zdefiniowane zmienna myVar a ja przypisany do tego wartość.

Chcę przypisać obramowane klasy do elementu myList, który ma wartość równą myVar i przypisać inną klasę, jeśli wartość tego elementu jest inna.

Odpowiedz

11

* ngJeśli będzie działać, jeśli zmienisz {{myVar}} na myVar (bez interpolacji) w wyrażeniu.

<li *ngFor="let item of myList"> 
    <div *ngIf="item.messageText === myVar" class="bordered">{{item.messageText}}</div> 
    <div *ngIf="item.messageText !== myVar" class="greyedOut">{{item.messageText}}</div> 
</li> 

Choć wolałbym, aby korzystać ngClass tutaj, czystsze i bardziej lepszym rozwiązaniem.

<li *ngFor="let item of myList"> 
    <div [ngClass]="item.messageText == item.messageText ? 'bordered': 'greyedOut'"> 
     {{item.messageText}} 
    </div> 
</li> 

LUB

<li *ngFor="let item of myList"> 
    <div [ngClass]="{'bordered': item.messageText == item.messageText, 'greyedOut': item.messageText !== item.messageText }"> 
     {{item.messageText}} 
    </div> 
</li> 
+0

Per konwencji chcielibyśmy napisać 'szaro-out' zamiast camelCased' greyedOut' dla właściwości HTML i klas CSS. – nottinhill

+0

Czy możesz już ustawić atrybut klasy, ale musisz dodatkowo ngClass - gdzie chcesz mieć dodatkową klasę, ale tylko wtedy, gdy jest ona prawdziwa? –