Angular 4异步,加载并显示为空
发布时间:2020-12-17 09:41:38 所属栏目:安全 来源:网络整理
导读:我有一个Angular组件获取服务CatalogServiceinjected: export class CatalogListComponent implements OnInit { catalog$: ObservableMovieResponseItem[]; constructor(private catalogService: CatalogService) {} ngOnInit() { this.catalog$= this.cata
我有一个Angular组件获取服务CatalogServiceinjected:
export class CatalogListComponent implements OnInit { catalog$: Observable<MovieResponseItem[]>; constructor(private catalogService: CatalogService) {} ngOnInit() { this.catalog$= this.catalogService.userCatalog; } } 此服务返回Observable< MovieResponseItem []>在属性userCatalog上: @Injectable() export class CatalogService { get userCatalog(): Observable<MovieResponseItem[]> { return this._userCatalogSubject.asObservable(); } } 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> 这显然会在异步等待数据时显示#loading模板.如果observable返回数据,则迭代目录值. 但现在我想把它分成这种行为: >当我们等待数据时,显示加载动画 我怎么能得到这个?从我在类似帖子上看到的,没有人试图实现这一点(或者我没有找到它). 非常感谢! <div *ngIf="catalog$| async as catalog; else loading"> <ng-container *ngIf="catalog.length; else noItems"> <div *ngFor="let item of catalog">{{item.title}}</div> <ng-container> <ng-template #noItems>No Items!</ng-template> </div> <ng-template #loading>loading animation...</ng-template> 这应该可以解决问题.最好尽可能少地使用同步管道,只需将其声明为“模板”变量即可.否则,每个异步管道将执行一次流,这是一种不好的做法,如果这是http支持,可能会创建不需要的http调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 有没有办法动态设置Angularjs ui-grid的col宽度?
- twitter-bootstrap – Twitter Bootstrap 2:如何获得响应式
- 为什么$BASH_SUBSHELL不会增加管道
- WebService出现因URL 意外地以""结束,请求格式无法
- ngScreening - angular 筛选器
- 组织Scala中的枚举
- bootstrap3 创建页面
- 使用Twitter Bootstrap样式和C#中的项填充@ html.DropDownL
- ubuntu – 如何在Kubernetes获得服务IP?
- Bootstrap3.0学习第二十五轮(JavaScript插件——折叠)