我如何在 angular 加载 json 数据时添加加载程序
how can i add a loader while angular loads json data
这是我获取angular中数据的代码,
我试图让它对用户更友好,但加载需要一段时间,我正在寻找一种在 angular 中添加加载程序的方法 我是 angular 的新手。
我正在使用 ionic cli 通过 json 数据
构建移动应用程序提要
import { Component, OnInit } from '@angular/core';
import { DataService } from "../data.service";
@Component({
selector: 'app-articlespage',
templateUrl: './articlespage.page.html',
styleUrls: ['./articlespage.page.scss'],
})
export class ArticlespagePage implements OnInit {
//id : any[];
title : any[];
author : any[];
date : any[];
content : any[];
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getRemoteData().subscribe(data => {
console.log("Remote Data:" + JSON.stringify(data));
//console.log(data);
this.parseJson(data);
});
}
parseJson(data)
{
let jsonArray = data;
//this.id = [];
this.title = [];
this.author = [];
this.date = [];
this.content = [];
for(let i=0; i< jsonArray.length ; i++)
{
let jsonObject = jsonArray[i];
//this.id.push(jsonObject.id);
this.title.push(jsonObject.title);
this.author.push(jsonObject.author.name);
this.date.push(jsonObject.created_at );
this.content.push(jsonObject.blog_entry );
}
}
}
html:
<ion-content fullscreen>
<h2 > Articles </h2>
<ion-card class="feedspotcard-1 box" *ngFor=" let item of title; let i = index;">
<ion-card-content>
<div class="box-shadow">
<div class="coolbar"></div>
<!-- <p> <span> Id : </span> <span innerHTML={{id[i]}}> </span> </p> -->
<h4> <span innerHTML={{title[i]}}> </span> </h4>
<p> <span innerHTML={{content[i]}}> </span> </p>
<p> <span> author : </span> <span innerHTML={{author[i]}}> </span> </p>
<p> <span> date : </span> <span innerHTML={{date[i]}}> </span> </p>
</div>
</ion-card-content>
</ion-card>
</ion-content>
不需要,但结果:
您需要一个 属性 来跟踪请求的状态。即 loadingData: boolean
.
在您的组件中,您需要在请求开始时和完成时设置此值。
ngOnInit(): void {
this.loading = true;
this.dataService.getRemoteData().subscribe(data => {
// set the status of loading to false so the template can update
this.loading =f alse;
console.log("Remote Data:" + JSON.stringify(data));
//console.log(data);
this.parseJson(data);
});
}
最后,在模板中,添加一个根据 loading
属性 的值显示的元素。
<div *ngIf="loading"><!-- Insert your progress message/animation --> </div>
您可以使用 ngx-spinner
作为加载器。它的工作原理如下。
首先在根模块(AppModule)中导入 NgxSpinnerModule
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
// Import library module
import { NgxSpinnerModule } from "ngx-spinner";
@NgModule({
imports: [
// ...
NgxSpinnerModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
在任何您想使用 ngx-spinner
的地方添加 NgxSpinnerService
服务
import { NgxSpinnerService } from "ngx-spinner";
class AppComponent implements OnInit {
constructor(private spinner: NgxSpinnerService) {}
ngOnInit() {
/** spinner starts on init */
this.spinner.show();
setTimeout(() => {
/** spinner ends after 5 seconds */
this.spinner.hide();
}, 5000);
}
}
在您的模板中使用。
<ngx-spinner></ngx-spinner>
这是我获取angular中数据的代码, 我试图让它对用户更友好,但加载需要一段时间,我正在寻找一种在 angular 中添加加载程序的方法 我是 angular 的新手。
我正在使用 ionic cli 通过 json 数据
构建移动应用程序提要 import { Component, OnInit } from '@angular/core';
import { DataService } from "../data.service";
@Component({
selector: 'app-articlespage',
templateUrl: './articlespage.page.html',
styleUrls: ['./articlespage.page.scss'],
})
export class ArticlespagePage implements OnInit {
//id : any[];
title : any[];
author : any[];
date : any[];
content : any[];
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getRemoteData().subscribe(data => {
console.log("Remote Data:" + JSON.stringify(data));
//console.log(data);
this.parseJson(data);
});
}
parseJson(data)
{
let jsonArray = data;
//this.id = [];
this.title = [];
this.author = [];
this.date = [];
this.content = [];
for(let i=0; i< jsonArray.length ; i++)
{
let jsonObject = jsonArray[i];
//this.id.push(jsonObject.id);
this.title.push(jsonObject.title);
this.author.push(jsonObject.author.name);
this.date.push(jsonObject.created_at );
this.content.push(jsonObject.blog_entry );
}
}
}
html:
<ion-content fullscreen>
<h2 > Articles </h2>
<ion-card class="feedspotcard-1 box" *ngFor=" let item of title; let i = index;">
<ion-card-content>
<div class="box-shadow">
<div class="coolbar"></div>
<!-- <p> <span> Id : </span> <span innerHTML={{id[i]}}> </span> </p> -->
<h4> <span innerHTML={{title[i]}}> </span> </h4>
<p> <span innerHTML={{content[i]}}> </span> </p>
<p> <span> author : </span> <span innerHTML={{author[i]}}> </span> </p>
<p> <span> date : </span> <span innerHTML={{date[i]}}> </span> </p>
</div>
</ion-card-content>
</ion-card>
</ion-content>
不需要,但结果:
您需要一个 属性 来跟踪请求的状态。即 loadingData: boolean
.
在您的组件中,您需要在请求开始时和完成时设置此值。
ngOnInit(): void {
this.loading = true;
this.dataService.getRemoteData().subscribe(data => {
// set the status of loading to false so the template can update
this.loading =f alse;
console.log("Remote Data:" + JSON.stringify(data));
//console.log(data);
this.parseJson(data);
});
}
最后,在模板中,添加一个根据 loading
属性 的值显示的元素。
<div *ngIf="loading"><!-- Insert your progress message/animation --> </div>
您可以使用 ngx-spinner
作为加载器。它的工作原理如下。
首先在根模块(AppModule)中导入 NgxSpinnerModule
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
// Import library module
import { NgxSpinnerModule } from "ngx-spinner";
@NgModule({
imports: [
// ...
NgxSpinnerModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class AppModule {}
在任何您想使用 ngx-spinner
的地方添加NgxSpinnerService
服务
import { NgxSpinnerService } from "ngx-spinner";
class AppComponent implements OnInit {
constructor(private spinner: NgxSpinnerService) {}
ngOnInit() {
/** spinner starts on init */
this.spinner.show();
setTimeout(() => {
/** spinner ends after 5 seconds */
this.spinner.hide();
}, 5000);
}
}
在您的模板中使用。
<ngx-spinner></ngx-spinner>