Nav*_*med 89 observable angular2-template angular2-services angular
在我的Angular 2组件中,我有一个Observable数组
list$: Observable<any[]>;
Run Code Online (Sandbox Code Playgroud)
在我的模板中我有
<div *ngIf="list$.length==0">No records found.</div>
<div *ngIf="list$.length>0">
<ul>
<li *ngFor="let item of list$ | async">item.name</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
但是对于Observable数组,列表$ .length不起作用.
更新:
似乎(列出$ | async)?. length给出了我们的长度但是下面的代码仍然不起作用:
<div>
Length: {{(list$ | async)?.length}}
<div *ngIf="(list$ | async)?.length>0">
<ul>
<li *ngFor="let item of (list$ | async)">
{{item.firstName}}
</li>
</ul>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我如何检查Observable数组的长度.
Gün*_*uer 147
你可以使用| async
管道:
<div *ngIf="(list$ | async)?.length==0">No records found.</div>
Run Code Online (Sandbox Code Playgroud)
更新 - Angular版本6:
如果你正在加载一个CSS Skeleton,你可以使用它.如果数组没有项目,它将显示css模板.如果有数据则填写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>
Run Code Online (Sandbox Code Playgroud)
Bla*_*ank 28
.ts-Files的解决方案:
this.list.subscribe(result => {console.log(result.length)});
Run Code Online (Sandbox Code Playgroud)
KAM*_*HED 12
对于Angular 4+,试试这个
<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>
Run Code Online (Sandbox Code Playgroud)
虽然这个答案是正确的
<div *ngIf="(list$ | async)?.length === 0">No records found.</div>
Run Code Online (Sandbox Code Playgroud)
请记住,如果您使用http客户端来调用后端(在大多数情况下是这样做),则如果列表中有多个列表,则会重复调用API 。异步。这是因为每个| 异步管道将在您的$$可观察列表中创建新的订户。
归档时间: |
|
查看次数: |
68884 次 |
最近记录: |