我有一个角部件,其获取喷射的服务CatalogService
:角4异步与加载和显示当空
@Injectable()
export class CatalogService {
get userCatalog(): Observable<MovieResponseItem[]> {
return this._userCatalogSubject.asObservable();
}
}
的MovieResponseItem
是:
export class CatalogListComponent implements OnInit {
catalog$: Observable<MovieResponseItem[]>;
constructor(private catalogService: CatalogService) {}
ngOnInit() {
this.catalog$ = this.catalogService.userCatalog;
}
}
该服务上属性userCatalog
返回Observable<MovieResponseItem[]>
只是一个简单的界面:
export interface MovieResponseItem {
title: string;
}
现在我想迭代项目并显示加载动画,而目录查询底层服务的数据(这需要一些时间) - 这是有效的。这是使用的模板:
<div *ngIf="(catalog$ | async)?.length > 0; else loading">
<ng-container *ngFor="let item of catalog$ | async">
<div>{{item.title}}</div>
<ng-container>
</div>
<ng-template #loading>loading animation...</ng-template>
这明显显示了#async正在等待数据时的#loading模板。如果observable返回数据,它会遍历目录值。
但现在我想这个分成这种行为:如果我们从服务,并返回列表的响应
- 而我们等待数据,显示加载动画
- 是空的,显示出信息文本(如“你的目录是空的”)并且不迭代(因为没有数据)
- 如果我们有来自服务的响应并且返回的列表具有值,则迭代项目(如当前状态)
我该如何实现这一目标?从我在相似的帖子上阅读的内容来看,没有人试图达到这个目的(或者我没有找到它)。
非常感谢!
您可以在您的ngFor容器下方添加另一个 your catalogue response is empty 。 –