Вы можете отфильтровать ваши данные, используя структурную директиву *ngIf
, а затем применить стиль:
<ul
*ngIf="myData?.paymentChannels"
class="ul1">
<li
[style.background]="p?.status === 'Offline'? 'grey' : 'green'"
class="li1"
*ngFor="let p of myData?.paymentChannels">
<ng-container *ngIf="p?.status === 'Offline'">
<span>{{p.name}}</span>
<br>
<span>{{p.status}}</span>
</ng-container>
</li>
</ul>
Если вы хотите фильтровать, а ваш массив данных небольшой, вы можете использовать директиву *ngIf
.Однако было бы лучше использовать трубу фильтра:
<li *ngFor="let item of myData?.paymentChannels | yourFilter:filterargs">
и вашу трубу:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'myfilter',
pure: false
})
export class YourFilterPipe implements PipeTransform {
transform(items: any[], filter: Object): any {
if (!items || !filter) {
return items;
}
// filter items array, items which match and return true will be
// kept, false will be filtered out
return items.filter(item => item.title.indexOf(filter.title) !== -1);
}
}
, и вы должны включить свою трубу в app.module.ts
:
import { YourFilterPipe } from './shared/pipes/your-filter.pipe';
@NgModule({
imports: [
..
],
declarations: [
YourFilterPipe,
],
providers: [
..
],
bootstrap: [AppComponent]
})
export class AppModule { }
Пожалуйста, посмотрите пример на stackblitz.com
ОБНОВЛЕНИЕ:
Если вы не хотите фильтровать данные, но скрыть статусoffline
Вы можете использовать *ngIf
структурную директиву:
<ul
*ngIf="myData?.paymentChannels"
class="ul1">
<li
[style.background]="p?.status === 'Offline'? 'grey' : 'green'"
class="li1"
*ngFor="let p of myData?.paymentChannels">
<span>{{p.name}}</span>
<br>
<span *ngIf="p?.status === 'Offline'; else empty">{{p.status}}</span>
<ng-template #empty>$nbsp;</ng-template>
</li>
</ul>