2017-02-02 4 views
0

Я новичок в Angular2, и я хочу знать, как изменить CSS значка условно на основе значений.Изменить цвет значка на основе значения

В HTML:

<li><i class="fa fa-check" [style.color]="'switch(types)'"></i>{{ types }}</li> 

типа содержит множество целых чисел в диапазоне от 1-3.

В ц:

switch(p) { 
    if(p==0) {...} //return color red 
    if(p==1) {...} //return color blue 
    if(p==2) {...} //return color green 
} 

Это не похоже на работу для меня.

+1

Это в ngfor? – micronyks

ответ

1

Коммутатор использует корпус в его корпусе отсутствует. Другой способ - использовать привязку функций (что не является предпочтительным), но не может найти другого решения.

[style.color]="color(types)" 


color(p) { 
    if(p==0) {return 'green'} 
    if(p==1) {return 'red'} 
    if(p==2) {return 'blue'} 
} 

DEMO: https://plnkr.co/edit/zQ79mbS2U3X1s9ktnTIR?p=preview

1
<li> 
     <i class="fa fa-check" [ngStyle]="{'color': switch(types)}"> 
      {{types}} 
     </i> 
    </li> 


switch(p) { 
    if(p==0) {return 'red'} 
    if(p==1) {return 'blue'} 
    if(p==2) {return 'green'} 
} 
-1

вы можете сделать что-то вроде этого:

<li><i class="fa fa-check" [ngStyle]="changeCSS(types)"></i>{{ types }}</li> 


     changeCSS(types:any){ 
    let style:any; 
     if(types == 0){ 
     style={ 
      'background':'..', 
      'border-color':'....', 
      'border-bottom': '...', 

     } 
    } 
return style; 
} 

Надеется, что это помогает

РЕДАКТИРОВАТЬ: удалил '' как это было предложено

+0

Этот подход имеет несколько недостатков. Он не будет работать вообще из-за избыточных котировок '' '' вокруг 'changesCSS (types)', и это довольно плохая идея, потому что он возвращает новый экземпляр класса каждый раз, когда вызывается 'changeCSS()'. Это в основном нарушает обнаружение изменений углов. Он должен по крайней мере кэшировать и повторно использовать созданный объект 'style'. –

+0

Я забыл удалить ''. скопировал все это. Что в стороне, [ngStyle] не подходит? могу ли я знать, каким образом я могу это реализовать? – CruelEngine

+0

'ngStyle' в порядке (не слишком внимательно посмотрел на фактическую проблему, указанную в вопросе). Проблема в том, что 'changeCSS()' возвращает новый объект каждый раз, когда он вызывается. –

Смежные вопросы