Search code examples
highchartsionic3angular2-highcharts

Can't bind to 'options' since it isn't a known property of 'chart'


I have created a chart module using Angular2-highcharts but when I try to run the application I am getting the followoing error.

ERROR Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'options' since it isn't a known property of 'chart'. ("

<!-- <p text-center>Kye Info Page under construction</p> -->
  <chart [ERROR ->][options]="chartOptions" type="chart"></chart>
</ion-content>
"): ng:///KeyinfoPageModule/KeyinfoPage.html@27:9
'chart' is not a known element:

1. If 'chart' is an Angular component, then verify that it is part of this module.
2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
<ion-content>

Code

1. app.module.ts

import { ChartModule } from 'angular2-highcharts';
import * as highcharts from 'Highcharts';

imports: [
---------
ChartModule.forRoot(highcharts)
  ],

2. html File

<ion-content>
  <chart [options]="chartOptions" type="chart"></chart>
</ion-content>

3. .ts file

    export class KeyinfoPage {

      chartOptions:any;
      constructor(public navCtrl: NavController) {
      }

      ionViewDidLoad() {
    this.chartOptions={chart: {
      type: 'area'
  },
  title: {
      text: 'US and USSR nuclear stockpiles'
  },
  subtitle: {
      text: 'Source: <a href="http://thebulletin.metapress.com/content/c4120650912x74k7/fulltext.pdf">' +
          'thebulletin.metapress.com</a>'
  },
  xAxis: {
      allowDecimals: false,
      labels: {
          formatter: function () {
              return this.value; // clean, unformatted number for year
          }
      }
  },
  yAxis: {
      title: {
          text: 'Nuclear weapon states'
      },
      labels: {
          formatter: function () {
              return this.value / 1000 + 'k';
          }
      }
  },
  tooltip: {
      pointFormat: '{series.name} produced <b>{point.y:,.0f}</b><br/>warheads in {point.x}'
  },
  plotOptions: {
      area: {
          pointStart: 1940,
          marker: {
              enabled: false,
              symbol: 'circle',
              radius: 2,
              states: {
                  hover: {
                      enabled: true
                  }
              }
          }
      }
  },
  series: [{
      name: 'USA',
      data: [null, null, null, null, null, 6, 11, 32, 110, 235, 369, 640,
          1005, 1436, 2063, 3057, 4618, 6444, 9822, 15468, 20434, 24126,
          27387, 29459, 31056, 31982, 32040, 31233, 29224, 27342, 26662,
          26956, 27912, 28999, 28965, 27826, 25579, 25722, 24826, 24605,
          24304, 23464, 23708, 24099, 24357, 24237, 24401, 24344, 23586,
          22380, 21004, 17287, 14747, 13076, 12555, 12144, 11009, 10950,
          10871, 10824, 10577, 10527, 10475, 10421, 10358, 10295, 10104]
  }, {
      name: 'USSR/Russia',
      data: [null, null, null, null, null, null, null, null, null, null,
          5, 25, 50, 120, 150, 200, 426, 660, 869, 1060, 1605, 2471, 3322,
          4238, 5221, 6129, 7089, 8339, 9399, 10538, 11643, 13092, 14478,
          15915, 17385, 19055, 21205, 23044, 25393, 27935, 30062, 32049,
          33952, 35804, 37431, 39197, 45000, 43000, 41000, 39000, 37000,
          35000, 33000, 31000, 29000, 27000, 25000, 24000, 23000, 22000,
          21000, 20000, 19000, 18000, 18000, 17000, 16000]
  }]
    }
    console.log('ionViewDidLoad KeyinfoPage');
  }
   viewDashboard(){
      this.navCtrl.setRoot('DashboardPage')
  }

}

Please help me to solve this issue. I have found several questions like this but none of them helped me to solve this error. I am following this video to create the charts

https://www.youtube.com/watch?v=FSg8n5_uaWs&index=2&list=LLTJRcsGtG-ZMAf9dklVIikA&t=610s

keyinfo.module.ts

 import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { KeyinfoPage } from './keyinfo';
import { ChartModule } from 'angular2-highcharts';
import * as highcharts from 'highcharts';

@NgModule({
  declarations: [
    KeyinfoPage,
  ],
  imports: [
    IonicPageModule.forChild(KeyinfoPage),
    ChartModule
  ],
})
export class KeyinfoPageModule {}

Solution

  • You can set import the HighChartsModule in the IonicPageModule in which it is used instead of the app.module.ts

    import { ChartModule } from 'angular2-highcharts';
    import * as highcharts from 'highcharts';
    
        @NgModule({
          declarations: [
            KeyinfoPage,
          ],
          imports: [
            IonicPageModule.forChild(KeyinfoPage),
            ChartModule.forRoot(highcharts)
          ],
        })
        export class KeyinfoPageModule {}