📅  最后修改于: 2023-12-03 15:38:39.491000             🧑  作者: Mango
在 Angular 应用程序中,当加载 API 数据时,通常需要显示进度指示器或 Spinner,以便用户知道应用程序正在进行某些操作并且加载数据需要一些时间。下面将介绍如何实现在屏幕上显示一个 Spinner 直到 API 中的数据使用 Angular 8 加载。
npm install ngx-spinner --save
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgxSpinnerModule } from 'ngx-spinner';
@NgModule({
imports: [
BrowserAnimationsModule,
NgxSpinnerModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
getData()
的方法来从 API 获取数据:import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class DataService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get('/api/data');
}
}
import { Component, OnInit } from '@angular/core';
import { NgxSpinnerService } from 'ngx-spinner';
import { DataService } from './data.service';
@Component({
selector: 'app-data',
template: `
<div *ngIf="showSpinner" ngxSpinner="spinner"></div>
<div *ngIf="!showSpinner">
<ul>
<li *ngFor="let item of data">{{ item }}</li>
</ul>
</div>
`
})
export class DataComponent implements OnInit {
data: Array<any>;
showSpinner: boolean = true;
constructor(private dataService: DataService, private spinner: NgxSpinnerService) { }
ngOnInit() {
this.spinner.show();
this.dataService.getData().subscribe((data: Array<any>) => {
this.data = data;
this.spinner.hide();
this.showSpinner = false;
});
}
}
在组件模板中使用了 *ngIf 指令来显示/隐藏 Spinner 和数据。如果 showSpinner 属性为 true,Spinner 将显示出来。如果 showSpinner 属性为 false,则显示数据。
<app-data></app-data>
现在,你应该已经了解了如何在屏幕上显示 Spinner 直到 API 中的数据使用 Angular 8 加载。要实现此目标,我们使用了 ngx-spinner 和 Angular HttpClient。这是一种非常普遍的加载数据方式,可以改善用户体验,因为用户可以看到进度指示器,知道正在加载数据。