Angular 2 "ng-style" внутри "* ngFor" изменения цвета фона
Я пытаюсь применить цвета фона, используя ng-style
. Каждая строка списка создается с помощью ngFor
. Каждый элемент, имеющий отдельные цвета фона
<ion-item class="category-list" *ngFor="let item of character['items']">
<ion-avatar item-left>
<i class="icon" [ngStyle]="{'background-color': item.bgcolor}"><img src="../img/icons/category/{{item.img}}.png"></i>
</ion-avatar>
<h2>{{item.category}}</h2>
</ion-item>
И Typescript.ts:
var characters = [
{
name: 'Gollum',
quote: 'Sneaky little hobbitses!',
items: [
{ bgcolor: 'fb9667', img: 'airTicket', category: 'Air tickets' },
{ bgcolor: '000000', img: 'airTicket', category: 'Beauty/Fitness'},
{ bgcolor: '0b9660', img: 'airTicket', category: 'Bike'}
]
},
]
Не знаю, как применить цветовой код к списку.
Ответы
Ответ 1
Вы можете изменить цвет фона с помощью [style.backgroundColor]
:
<i class="icon" [style.backgroundColor]="item.bgcolor"></i>
Если, конечно, строка в item.bgcolor
является допустимой строкой цвета css:
#FFFFFF
white
rgb(255,255,255)
rgba(255,255,255,1)
Что в вашем случае нет. Вам не хватает ведущего #
, и вы должны изменить свой список товаров на это:
items: [
{ bgcolor: '#fb9667', img: 'airTicket', category: 'Air tickets' },
{ bgcolor: '#000000', img: 'airTicket', category: 'Beauty/Fitness'},
{ bgcolor: '#0b9660', img: 'airTicket', category: 'Bike'}
]
Ответ 2
Вы можете напрямую применить этот css, а альтернативные строки будут иметь разный цвет
li {фон: зеленый; }
li: nth-child (нечетный) {фон: красный; }
Ответ 3
для дальнейшего использования другими разработчиками, вот мой ответ. функция зациклит все цвета в каждой строке, ngFor
сгенерирует ngFor
<ion-col [ngStyle]="{'background-color': getColors(i) }" *ngFor="let data of Data;let i = index">
Colors:Array<any> = ["#FFF","#0b9660","#FF0000","#000","#FFF","#ffd11a","#fb9667"];
getColors(index) {
let num = this.getnumber(index);
return this.Colors[num];
}
getnumber(data){
let i = data;
if(i > this.Colors.length-1){
i = i - this.Colors.length;
if(i < this.Colors.length){
return i;
}
else {
this.getnumber(i);
}
}
else {
return i;
}
}