npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

angular-highcharts

v21.0.2

Published

[![NPM version](https://img.shields.io/npm/v/angular-highcharts.svg)](https://npmjs.org/package/angular-highcharts) [![NPM downloads](https://img.shields.io/npm/dt/angular-highcharts.svg)](https://npmjs.org/package/angular-highcharts) ![Build Status](http

Downloads

102,252

Readme

angular-highcharts

NPM version NPM downloads Build Status

An Angular wrapper for Highcharts, providing easy integration of Highcharts, Highstock, Highmaps, and Highcharts Gantt charts into your Angular applications.

Table of Contents

Requirements

| Package | Version | |---------|---------| | Angular | >=21.0.0 | | Highcharts | >=11.0.0 |

Installation

Install both angular-highcharts and highcharts:

npm

npm install --save angular-highcharts highcharts

yarn

yarn add angular-highcharts highcharts

pnpm

pnpm add angular-highcharts highcharts

Usage

Step 1: Import the Module

Import ChartModule in your Angular module:

// app.module.ts
import { ChartModule } from 'angular-highcharts';

@NgModule({
  imports: [
    ChartModule // Add ChartModule to your imports
  ]
})
export class AppModule {}

Step 2: Create a Chart Component

// chart.component.ts
import { Component } from '@angular/core';
import { Chart } from 'angular-highcharts';

@Component({
  selector: 'app-chart',
  template: `
    <button (click)="add()">Add Point</button>
    <div [chart]="chart"></div>
  `
})
export class ChartComponent {
  chart = new Chart({
    chart: {
      type: 'line'
    },
    title: {
      text: 'Line Chart Example'
    },
    credits: {
      enabled: false
    },
    series: [{
      name: 'Line 1',
      data: [1, 2, 3],
      type: 'line'
    }]
  });

  // Add a point to the chart series
  add() {
    this.chart.addPoint(Math.floor(Math.random() * 10));
  }
}

Working with Chart Reference

Use the ref$ observable to access the Highcharts chart instance:

import { Component, OnInit } from '@angular/core';
import { Chart } from 'angular-highcharts';

export class ChartComponent implements OnInit {
  chart = new Chart({
    // ... chart options
  });

  ngOnInit() {
    this.chart.ref$.subscribe(chart => {
      // Access the Highcharts.Chart instance
      console.log(chart);
      
      // Use Highcharts API methods
      chart.setTitle({ text: 'Updated Title' });
    });
  }
}

API Documentation

Chart

Standard Highcharts chart for line, bar, pie, and other basic chart types.

Type: class

Constructor

new Chart(options: Highcharts.Options)

Properties

ref$: Observable<Highcharts.Chart>

Observable that emits the initialized Highcharts.Chart instance. Use this to access the chart API.

See Official Highcharts API Docs

chart.ref$.subscribe(chartInstance => {
  // Work with the chart
  chartInstance.setTitle({ text: 'New Title' });
});
ref: Highcharts.Chart ⚠️ Deprecated

Direct reference to the chart. Deprecated - use ref$ observable instead.

Methods

addPoint(point: number | [number, number] | Highcharts.PointOptionsObject, serieIndex?: number, redraw?: boolean, shift?: boolean): void

Adds a point to a series.

Parameters:

  • point - The point to add (number, tuple, or object)
  • serieIndex - Index of the series (default: 0)
  • redraw - Whether to redraw the chart (default: true)
  • shift - Whether to shift the first point off (default: false)

Example:

this.chart.addPoint(10);
this.chart.addPoint([Date.now(), 25], 0, true, false);
removePoint(pointIndex: number, serieIndex?: number, redraw?: boolean, shift?: boolean): void

Removes a point from a series.

Parameters:

  • pointIndex - Index of the point to remove
  • serieIndex - Index of the series (default: 0)
  • redraw - Whether to redraw the chart (default: true)
  • shift - Whether to shift (default: false)
addSeries(series: Highcharts.SeriesOptionsType): void

Adds a new series to the chart.

Example:

this.chart.addSeries({
  name: 'New Series',
  data: [1, 2, 3, 4],
  type: 'line'
});
removeSeries(seriesIndex: number): void

Removes a series from the chart by index.

init(el: ElementRef): void

Initializes the chart. Called automatically by the directive.

destroy(): void

Destroys the chart and cleans up resources.

StockChart

Highstock chart for financial and time-series data with advanced features like range selectors and navigator.

Type: class

Constructor

new StockChart(options: Highcharts.Options)

Properties

ref$: Observable<Highcharts.Chart>

Observable that emits the initialized Highstock chart instance.

ref: Highcharts.Chart ⚠️ Deprecated

Direct reference to the chart. Deprecated - use ref$ observable instead.

Example

import { StockChart } from 'angular-highcharts';

stockChart = new StockChart({
  rangeSelector: {
    selected: 1
  },
  series: [{
    name: 'Stock Price',
    data: [[Date.UTC(2023, 0, 1), 100], [Date.UTC(2023, 0, 2), 105]],
    type: 'line'
  }]
});

MapChart

Highmaps chart for geographical data visualization.

Type: class

Constructor

new MapChart(options: Highcharts.Options)

Properties

ref$: Observable<Highcharts.Chart>

Observable that emits the initialized Highmaps chart instance.

ref: Highcharts.Chart ⚠️ Deprecated

Direct reference to the chart. Deprecated - use ref$ observable instead.

Example

import { MapChart } from 'angular-highcharts';
import worldMap from '@highcharts/map-collection/custom/world.geo.json';

mapChart = new MapChart({
  chart: {
    map: worldMap
  },
  title: {
    text: 'World Map'
  },
  series: [{
    type: 'map',
    name: 'Countries',
    data: [/* map data */]
  }]
});

HighchartsGantt

Highcharts Gantt chart for project management and scheduling visualization.

Type: class

Constructor

new HighchartsGantt(options: Highcharts.Options)

Properties

ref$: Observable<Highcharts.Chart>

Observable that emits the initialized Gantt chart instance.

Example

import { HighchartsGantt } from 'angular-highcharts';

ganttChart = new HighchartsGantt({
  title: {
    text: 'Project Timeline'
  },
  series: [{
    type: 'gantt',
    name: 'Tasks',
    data: [/* gantt data */]
  }]
});

Using Highcharts Modules

Highcharts provides additional modules for extended functionality (exporting, 3D charts, annotations, etc.). To use these modules with angular-highcharts:

Important Notes

  1. Use ESM imports: Import from highcharts/esm/ for proper tree-shaking and module resolution
  2. Use .src suffix: Import modules with .src. in the path for AOT compatibility
  3. Default imports: Use default imports (recommended) or namespace imports
  4. Factory pattern: Provide modules using a factory function (required for AOT)
  5. Location: Most modules are in highcharts/esm/modules/, except highcharts-more.src which is in the root

Available Modules

You can find available modules in your node_modules/highcharts/esm/modules/ directory:

ls -la node_modules/highcharts/esm/modules/

Popular modules include:

  • exporting.src - Chart export functionality
  • export-data.src - Export chart data to CSV/Excel
  • accessibility.src - Accessibility features
  • annotations.src - Chart annotations
  • boost.src - Performance boost for large datasets
  • drilldown.src - Drilldown functionality
  • no-data-to-display.src - Message when no data available

Example

// app.module.ts
import { ChartModule, HIGHCHARTS_MODULES } from 'angular-highcharts';
import more from 'highcharts/esm/highcharts-more.src';
import exporting from 'highcharts/esm/modules/exporting.src';
import exportData from 'highcharts/esm/modules/export-data.src';
import accessibility from 'highcharts/esm/modules/accessibility.src';

@NgModule({
  imports: [ChartModule],
  providers: [
    { 
      provide: HIGHCHARTS_MODULES, 
      useFactory: () => [more, exporting, exportData, accessibility]
    }
  ]
})
export class AppModule { }

Module-Specific Usage

After registering modules, you can use their features in your chart options:

chart = new Chart({
  chart: { type: 'line' },
  exporting: {
    enabled: true,  // Enabled by exporting module
    buttons: {
      contextButton: {
        menuItems: ['downloadPNG', 'downloadJPEG', 'downloadPDF']
      }
    }
  },
  // ... other options
});

Troubleshooting

TypeScript Type Errors

If you encounter TypeScript errors when building or serving your Angular app, especially with specialized chart types like gauges or custom options:

// Cast options to any to bypass type checking
chart = new Chart({
  // gauge or custom options
} as any);

This is particularly useful for:

  • Gauge charts
  • Custom chart types
  • Advanced configurations not fully typed in @types/highcharts

Module Import Errors

Problem: Cannot find module 'highcharts/modules/exporting.src'

Solution: Ensure you're using the .src suffix and default imports:

// ✅ Correct - ESM default import (recommended)
import exporting from 'highcharts/esm/modules/exporting.src';

// ✅ Also works - Namespace import (still supported)
import * as exporting from 'highcharts/esm/modules/exporting.src';

// ❌ Wrong - Missing .src suffix
import exporting from 'highcharts/esm/modules/exporting';

Note: This library uses ESM imports internally (highcharts/esm/...). Both default and namespace import styles work for module registration.

Chart Not Rendering

Common causes:

  1. ChartModule not imported in your module
  2. Chart container has no height - add CSS: div { height: 400px; }
  3. Chart initialization happens before the view is ready - use ngAfterViewInit() or ref$ observable

Memory Leaks

Always destroy charts in ngOnDestroy():

ngOnDestroy() {
  this.chart.destroy();
}

More Help

Demo

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Setting up your development environment
  • Coding standards and conventions
  • Commit message guidelines
  • Pull request process

Before submitting a PR, please:

  1. Check existing issues and PRs
  2. Follow the commit message format
  3. Add tests for new features
  4. Update documentation as needed

Support

License

MIT © Felix Itzenplitz


Made with ❤️ for the Angular community