Чтобы нарисовать PieChart из HTTP-запроса, пожалуйста, следуйте моим инструкциям ниже:
1 - Убедитесь, что вы установили Angular 2 charts и Charts.js, просто введите эту команду:
npm install ng2-charts --save
npm install chart.js --save
2- Зарегистрируйте ChartsModule:
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { HomePage } from '../pages/home/home';
import { TabsPage } from '../pages/tabs/tabs';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { ChartsModule } from 'ng2-charts';
import { Http, HttpModule } from '@angular/http';
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
imports: [
HttpModule,
BrowserModule,
IonicModule.forRoot(MyApp),
ChartsModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}
3- Добавьте тег Canvas в ваш HTML-файл, как показано ниже:
<ion-header>
<ion-navbar>
<ion-title>Home</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<h2>Welcome to Ionic!</h2>
<div style="display: block">
<canvas baseChart #baseChart="base-chart"
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutChartType"></canvas>
</div>
</ion-content>
4: Получить данные json и нарисовать на холсте:
Примечание: Я загружаю json из asset / datas.json через HTTP.
import { Component, ViewChild } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http, Response} from '@angular/http';
import { BaseChartDirective } from 'ng2-charts';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
@ViewChild("baseChart") pieChartEl: BaseChartDirective;
public doughnutChartLabels: string[] = [];
public doughnutChartData: number[] = [];
public doughnutChartType: string = 'doughnut';
constructor(public navCtrl: NavController, public http: Http) {
}
ionViewDidLoad() {
this.updateData();
}
public updateData() {
this.http.get("/assets/datas.json").subscribe((res: Response) => {
let jsons = res.json();
let data = jsons[0];
this.doughnutChartLabels.push("pos_percent");
this.doughnutChartLabels.push("neg_percent");
this.doughnutChartData.push(data.pos_percent);
this.doughnutChartData.push(data.neg_percent);
console.log(this.doughnutChartLabels);
console.log(this.doughnutChartData);
if(this.pieChartEl !== undefined){
this.pieChartEl.ngOnDestroy();
this.pieChartEl.chart = this.pieChartEl.getChartBuilder(this.pieChartEl.ctx);
}
});
}
}
5: Это мой результат:
Вы можете проверить мой код в ionic3-chart Надеюсь, это может помочь:).