How to check the length of an Observable array

后端 未结 8 2140
旧时难觅i
旧时难觅i 2020-12-02 08:19

In my Angular 2 component I have an Observable array

list$: Observable;

In my Template

相关标签:
8条回答
  • 2020-12-02 08:36

    While this answer is correct

    <div *ngIf="(list$ | async)?.length === 0">No records found.</div>
    

    Keep in mind that if you are using http client to call backend (in most cases you do) you will get duplicate calls to your API if you have more that one list$ | async. This is because each | async pipe will create new subscriber to your list$ observable.

    0 讨论(0)
  • 2020-12-02 08:36

    This is what worked for me -

    *ngIf="!photos || photos?.length===0"
    

    I am getting my data from httpClient async.

    All the other options here didn't work for me which was disappointing. Especially the sexy (list$ | async) pipe.

    Basa..

    0 讨论(0)
  • 2020-12-02 08:42

    Can be shortened as well:

    <div *ngIf="!(list$ | async)?.length">No records found.</div>
    

    Just use the exclamation mark before the parenthesis.

    0 讨论(0)
  • 2020-12-02 08:43

    You can use the | async pipe:

    <div *ngIf="(list$ | async)?.length==0">No records found.</div>
    

    Update - Angular Version 6:

    If you are loading up a css Skeleton you can use this. If the array has no items it will display the css template. If there is data then fill out the ngFor.

    <ul *ngIf="(list$| async)?.length > 0; else loading">
       <li *ngFor="let listItem of list$| async">
          {{ listItem.text }}
       </li>
    </ul>
    
    <ng-template #loading>
      <p>Shows when no data, waiting for Api</p>
      <loading-component></loading-component>
    </ng-template>
    
    0 讨论(0)
  • 2020-12-02 08:43

    For Angular 4+, try this

    <div *ngIf="list$ | async;let list">
        Length: {{list.length}}
        <div *ngIf="list.length>0">
            <ul>
                <li *ngFor="let item of list">
                    {{item.firstName}}
                </li>
            </ul>
        </div>
    </div>
    
    0 讨论(0)
  • 2020-12-02 08:58

    ionic 4

    <div *ngIf="(items | async)?.length==0">No records found.</div>
    

    it worked when i removed the $ sign

    0 讨论(0)
提交回复
热议问题