简体   繁体   中英

check with *ngIf, if there is an array or not (Angular 4)

I'm looping through a json file with *ngFor. While looping through the data, I want to check for every person, if it has no colors array. I do this with *ngIf.

JSON

[
  {
    "name": "Peter",
    "colors": [
      {
        "color": "blue"
      },
      {
        "color": "yellow"
      }
    ]
  },
  {
    "name": "Maria"
  }
  // has no colors array
]

HTML

<div *ngFor="let person of persons">
     <div *ngIf=" what comes here?? ">
        <p>{{person.name}} has no colors</p>
     </div>          
</div>

How can I check, if a person has no colors array?

Try this

<div *ngFor="let person of persons">
  <div *ngIf="person.colors && person.colors.length">

With words, it gives

If the array exists and has at least one element in it

The opposite would be

  <div *ngIf="!person.colors || !person.colors.length">

Which you can shorten with an Elvis operator

<div *ngIf="!person.colors?.length">

Very simply :

 <div *ngIf="!person.colors">
     <p>{{person.name}} has no colors</p>
 </div> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM