Angular 7 - коллекция объектов, если какой-либо элемент имеет свойство true - PullRequest
0 голосов
/ 28 декабря 2018

Как я могу запустить *ngIf в коллекции, если в коллекции есть какой-либо элемент со свойством true?

var data ={
  Collection: [
     {Flag : true },
     {Flag : true },
     {Flag : true },
     {Flag : false }
  ]
}

как мне сделать *ngIf="data.Collection.ANY(Flag == true)"

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Напишите функцию ниже в вашем компоненте

public hasFlag(): boolean {
  return this.data.collection && this.data.collection.some(item => item. Flag);
}

Теперь вызовите эту функцию

* ngIf = "hasFlag ()"

Надеюсь, вы этого не сделаетеполучить ошибку привязки

0 голосов
/ 28 декабря 2018

Это должно работать:

*ngIf="data.Collection.reduce((a, b) => a || b.Flag, true)"
0 голосов
/ 28 декабря 2018

Вы можете удобно использовать js some() здесь следующим образом -

<div *ngIf="data.Collection.some(x=>x.Flag)"></div>

Вот рабочий пример для some()-

var data ={
  Collection: [
     {Flag : true },
     {Flag : true },
     {Flag : true },
     {Flag : false }
  ]
}

// you may use it this way too - x => x.Flag == true
console.log(data.Collection.some(x => x.Flag));
0 голосов
/ 28 декабря 2018
<div *ngIf="data.Collection.filter(x=>x.Flag).length"></div>

, если вы хотите обработать также неопределенное

 <div *ngIf="data.Collection&&data.Collection.filter(x=>x.Flag).length"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...