user1076698
user1076698

Reputation: 691

change the font color based on value angular js

I am using AngularJS and I use ng-repeat to loop and show the details in the page.

Is there a possibility to change the font color based on the value?

<li ng-repeat="s in vm.States" >                        
  <span>{{s.Name}}</span>
  <span>{{s.state}}</span>
 </li>

Test1 -Error(Red)
Test2 - Warning(blue)
Test3 - Ignored(green)

Here s.state value can be Error, Warning or Ignored
Can I show different font colors for these states via angular or css?

Upvotes: 13

Views: 58512

Answers (4)

Ilya Dmitriev
Ilya Dmitriev

Reputation: 1720

You can achieve this with following code:

<li ng-repeat="s in vm.States" >                        
  <span>{{s.Name}}</span>
  <span ng-class="{'color-red': s.state === 'Error', 'color-blue': s.state === 'Warning', 'color-green': s.state === 'Ignored'}">{{s.state}}</span>
</li>

Where 'color-red', 'color-blue', 'color-green' are your css classes.

See it in plunker.

Check documentation about ng-class.

Upvotes: 19

Dan Moldovan
Dan Moldovan

Reputation: 3591

It might be worth also taking a look over ngStyle which is the same as ngClass but provides conditional inline syling such as

<li ng-repeat="s in vm.States" >                        
  <span>{{s.Name}}</span>
  <span ng-style="{'color: red': s.state === 'Error', 'color: blue': s.state === 'Warning', 'color: green': s.state === 'Ignored'}">{{s.state}}</span>
</li>

Upvotes: 8

jad-panda
jad-panda

Reputation: 2547

See this example

var myApp = angular.module('myapp',[]);

myApp
    .controller('MyCtrl1', function ($scope) {
        $scope.vm = {
            States: [
                {
                    Name: 'Error',
                    state: 'error',
                    color: 'red'
                },
                {
                    Name: 'Warning',
                    state: 'warning',
                    color: 'blue'
                },
                {
                    Name: 'Ignored',
                    state: 'ignored',
                    color: 'green'
                }
            ]
        };
    })
.red{
    color: red;
}

.blue{
    color: blue;   
}

.green{
    color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myapp">
    <div ng-controller="MyCtrl1">
        <li ng-repeat="s in vm.States" >                        
          <span ng-class="s.color">{{s.Name}}</span> - 
          <span ng-class="s.color">{{s.state}}</span>
         </li>
    </div>
 </div>

Upvotes: 1

edisonthk
edisonthk

Reputation: 1423

You can do it very easily by ng-class and css.

CSS code

.Error{color: red;}
.Warning{color: blue;}
.Ignored{color: green;}

Html code

<li ng-repeat="s in vm.States" >                        
  <span>{{s.Name}}</span>
  <span ng-class="s.state">{{s.state}}</span>
</li>

Upvotes: 6

Related Questions