Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

assign style with *ngIf evaluation in angular2

Tags:

css

angular

This is what I have:

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>

in home.ts I have defined the variable myVar and I've assigned to it a value.

I want to assign bordered class to the element of myList which has a value equal to myVar and assign another class if that element's value is different.

like image 293
splunk Avatar asked Oct 12 '16 15:10

splunk


2 Answers

*ngIf would work if you change {{myVar}} to myVar(without interpolation) in expression.

<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>

Though I would prefer you to use ngClass here, more cleaner and better solution.

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

OR

<li *ngFor="let item of myList">
    <div [ngClass]="{'bordered': item.messageText == item.messageText, 'greyedOut': item.messageText !== item.messageText }">
      {{item.messageText}}
    </div>
</li>
like image 164
Pankaj Parkar Avatar answered Sep 23 '22 04:09

Pankaj Parkar


To complete Panjak Parkar's answer, and to answer to the question in the title (style)

<li *ngFor="let item of myList">
    <div [ngStyle]="{'background-color':item.country === 'UK' ? 'green' : 'red'}">
    </div>
</li>
like image 29
Igor Beaufils Avatar answered Sep 21 '22 04:09

Igor Beaufils