将交互式Angular图表添加到ng-bootstrap组件

目录

介绍

使用代码

分步说明

创建Angular应用程序并添加ng-bootstrap

1. 创建Angular项目

2. 将ng-bootstrap和CanvasJS Angular图表组件添加到项目中

添加引导导航(选项卡)组件

1. 添加引导导航

2. 将图表添加到导航

3.仅在活动选项卡中显示图表


介绍

图表基本上是数据的图形表示,它们以可视化易于理解的方式汇总大数据或信息。作为网页设计师/开发人员,显然会在某个时间点在仪表板上工作。仪表板在图表的帮助下提供了大量信息。在本教程中,我将展示如何在Angular 14应用程序的 ng-bootstrap navs(选项卡)中添加 CanvasJS图表。我已经在Angular 14中构建了该应用程序,但CanvasJSng-bootstrap适用于多个版本的angularNG-Bootstrap是一个专为AngEcosystem设计的Bootstrap小部件。CanvasJS是一个强大的图表库,面向网页设计师和开发人员。图表组件支持30多种图表类型,具有响应互式,易于自定义,并允许您创建与您的网页/应用程序设计相匹配的精美图表。

使用代码

/* app.component.html */
<h1 class="text-center">CanvasJS Angular Charts in ng-bootstap Tabs</h1>
<div class="container">
    <ul ngbNav #nav="ngbNav" class="nav-tabs" (shown)="navChangeEvent($event)" 
    (hidden)="navHiddenEvent($event)">
      <li [ngbNavItem]="1">
        <a ngbNavLink>Line Chart</a>
        <ng-template ngbNavContent>
          <canvasjs-chart
          *ngIf="showChart"
          [options]="lineChartOptions"
          (chartInstance)="getChartInstance($event)"
          [styles]="{ width: '100%', height: '360px' }"
          ></canvasjs-chart>
        </ng-template>
      </li>
      <li [ngbNavItem]="2">
        <a ngbNavLink>Column Chart</a>
        <ng-template ngbNavContent>
          <canvasjs-chart
          *ngIf="showChart"
          [options]="columnChartOptions"
          (chartInstance)="getChartInstance($event)"
          [styles]="{ width: '100%', height: '360px' }"
          ></canvasjs-chart>
        </ng-template>
      </li>
      <li [ngbNavItem]="3">
        <a ngbNavLink>Pie Chart</a>
        <ng-template ngbNavContent>
          <canvasjs-chart
          *ngIf="showChart"
          [options]="pieChartOptions"
          (chartInstance)="getChartInstance($event)"
          [styles]="{ width: '100%', height: '360px' }"
          ></canvasjs-chart>
        </ng-template>
      </li>
    </ul>
    
    <div [ngbNavOutlet]="nav" class="mt-2"></div>
</div>

/* app.module.ts */
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';

import { NgbModule } from '@ng-bootstrap/ng-bootstrap';

import * as CanvasJSAngularChart from '../assets/canvasjs.angular.component';
var CanvasJSChart = CanvasJSAngularChart.CanvasJSChart;

@NgModule({
  declarations: [
    AppComponent,
    CanvasJSChart
  ],
  imports: [
    BrowserModule,
    NgbModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

/* app.component.ts */
import { Component, AfterViewInit } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
  active = 1;
  chart: any;
  showChart: Boolean = false;
  columnChartOptions = {
    animationEnabled: true,
    title: {
      text: 'Angular Column Chart in Bootstrap Tabs',
    },
    data: [{
        type: 'column',
        dataPoints: [
          { label: 'apple', y: 10 },
          { label: 'orange', y: 15 },
          { label: 'banana', y: 25 },
          { label: 'mango', y: 30 },
          { label: 'grape', y: 28 }
        ]
    }]
  };
  lineChartOptions = {
    animationEnabled: true,
    title: {
      text: 'Angular Line Chart in Bootstrap Tabs',
    },
    data: [{
        type: 'line',
        dataPoints: [
          { label: 'apple', y: 10 },
          { label: 'orange', y: 15 },
          { label: 'banana', y: 25 },
          { label: 'mango', y: 30 },
          { label: 'grape', y: 28 }
        ]
      }]
  };
  pieChartOptions = {
    animationEnabled: true,
    title: {
      text: 'Angular Pie Chart in Bootstrap Tabs',
    },
    data: [{
        type: 'pie',
        dataPoints: [
          { label: 'apple', y: 10 },
          { label: 'orange', y: 15 },
          { label: 'banana', y: 25 },
          { label: 'mango', y: 30 },
          { label: 'grape', y: 28 }
        ]
    }]
  };
  getChartInstance(chart: object) {
    this.chart = chart;
  }
  navChangeEvent(e: any) {
    this.showChart = true;
  }
  navHiddenEvent(e: any) {
    this.showChart = false;
  }
  ngAfterViewInit() {
    this.showChart = true;
  }
}

分步说明

创建Angular应用程序并添加ng-bootstrap

1. 创建Angular项目

使用Angular CLI创建一个新的 Angular 项目。如果您已有应用,请忽略此步骤。

ng new angular-bootstrap-charts

? Would you like to add Angular routing? Yes
? Which stylesheet format would you like to use? CSS

2. ng-bootstrapCanvasJS Angular图表组件添加到项目中

创建Angular项目后,将ng-bootstrapCanvasJS angular图添加到项目中。ng-bootstrap可以使用Angular CLI方式添加,也可以手动添加,您只需执行npm install package-name。以下是这两种方法的语法。

/* Angular CLI Way */
ng add @ng-bootstrap/ng-bootstrap
 
/* Manual Way */
npm install @ng-bootstrap/ng-bootstrap --save

CanvasJS angular图可以从他们的官方网站下载(npm包不是官方的)并将其保存在assets文件夹中以导入到项目中。
安装包后,让我们导入模块并注册它。打开 app.module.ts 文件并注册模块。

/* app.module.ts */
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
 
import { AppComponent } from './app.component';
 
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
 
import * as CanvasJSAngularChart from '../assets/canvasjs.angular.component';
var CanvasJSChart = CanvasJSAngularChart.CanvasJSChart;
 
@NgModule({
  declarations: [
    AppComponent,
    CanvasJSChart
  ],
  imports: [
    BrowserModule,
    NgbModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

添加引导导航(选项卡)组件

为简单起见,让我们向应用程序添加引导选项卡。您可以考虑添加任何引导组件,如模态、手风琴等。

1. 添加引导导航

<ul ngbNav #nav="ngbNav" class="nav-tabs">
  <li [ngbNavItem]="1">
    <a ngbNavLink>Line Chart</a>
    <ng-template ngbNavContent>
    </ng-template>
  </li>
  .
  .
  .
</ul>
 
<div [ngbNavOutlet]="nav" class="mt-2"></div>

2. 将图表添加到导航

<ul ngbNav #nav="ngbNav" class="nav-tabs">
  <li [ngbNavItem]="1">
    <a ngbNavLink>Line Chart</a>
    <ng-template ngbNavContent>
      <canvasjs-chart
      [options]="lineChartOptions"
      [styles]="{ width: '100%', height: '360px' }"
      ></canvasjs-chart>
    </ng-template>
  </li>
  .
  .
  .
</ul>
 
<div [ngbNavOutlet]="nav" class="mt-2"></div>

3.仅在活动选项卡中显示图表

在选项卡中,将显示活动选项卡的内容,而隐藏非活动选项卡的内容。因此,需要条件呈现,以便不呈现非活动选项卡中的图表。为此,您可以使用在选项卡可见或隐藏时不断切换的标志。根据标志,您可以呈现图表。

<ul ngbNav #nav="ngbNav" class="nav-tabs" (shown)="navChangeEvent($event)" 
    (hidden)="navHiddenEvent($event)">
  <li [ngbNavItem]="1">
    <a ngbNavLink>Line Chart</a>
    <ng-template ngbNavContent>
      <canvasjs-chart
      *ngIf="showChart"
      [options]="lineChartOptions"
      (chartInstance)="getChartInstance($event)"
      [styles]="{ width: '100%', height: '360px' }"
      ></canvasjs-chart>
    </ng-template>
  </li>
  .
  .
  .
</ul>

在撰写本文时,CanvasJS v3.6.7用于Angular 14项目。但是,CanvasJS图表适用于所有版本的Angular。如果您不熟悉CanvasJS Angular chartsCanvasJS API,或者需要复习一下,我建议您阅读 CanvasJS图表文档。对于ng-bootstrap,请查看此文档页面

https://www.codeproject.com/Tips/5338744/Add-Interactive-Angular-Charts-to-ng-bootstrap-Com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值