ng-apexcharts icon indicating copy to clipboard operation
ng-apexcharts copied to clipboard

angular 8/9 + ivy problem

Open mits87 opened this issue 6 years ago • 4 comments

Hello,

I have problem with ng-apexcharts and angular 8 or 9 with ivy compiler. Let's say I have the template:

<apx-chart
  [chart]="data.options.chart"
  [labels]="data.options.labels"
  [legend]="data.options.legend"
  [dataLabels]="data.options.dataLabels"
  [series]="data.series"
></apx-chart>

and configuration:

  data = {
    options: {
      dataLabels: {
        enabled: false,
      },
      legend: {
        position: 'bottom',
      },
      labels: ['AirBnB', 'Booking', 'Booking'],
      chart: {
        height: '360',
        type: 'donut'
      },
    },
    series: [55, 35, 10]
  };

Everything is extremely easy. But when I use that with ivy compiler (doesn't matter 8 or 9 version of angular) then I got an error:

ERROR in src/app/panel/statistics/statistics.component.html:2:3 - error TS2322: Type '{ height: string; type: string; }' is not assignable to type 'ApexChart'.
  Types of property 'type' are incompatible.
    Type 'string' is not assignable to type 'ChartType'.

2   [chart]="data.options.chart"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  src/app/panel/statistics/statistics.component.ts:6:16
    6   templateUrl: './statistics.component.html',
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component StatisticsComponent.
src/app/panel/statistics/statistics.component.html:4:3 - error TS2322: Type '{ position: string; }' is not assignable to type 'ApexLegend'.
  Types of property 'position' are incompatible.
    Type 'string' is not assignable to type '"bottom" | "top" | "right" | "left"'.

4   [legend]="data.options.legend"
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  src/app/panel/statistics/statistics.component.ts:6:16
    6   templateUrl: './statistics.component.html',
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component StatisticsComponent.

Can you help me with that?

mits87 avatar Sep 27 '19 17:09 mits87

I'm using with ivy for over 4 months no issues

Carniatto avatar Feb 03 '20 09:02 Carniatto

After release of angular 9.0 problem is back. I'm trying to add NgApexchartsModule to my module imports and build prod fails. It throws:

Property left of ForInStatement expected node to be of a type ["VariableDeclaration","LVal"] but instead got null

ng version

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.900.5
@angular-devkit/build-angular      0.900.5
@angular-devkit/build-ng-packagr   0.900.5
@angular-devkit/build-optimizer    0.900.5
@angular-devkit/build-webpack      0.900.5
@angular-devkit/core               9.0.5
@angular-devkit/schematics         9.0.5
@angular/cdk                       9.1.1
@angular/http                      7.2.15
@angular/material                  9.1.1
@angular/material-moment-adapter   9.1.1
@ngtools/webpack                   9.0.5
@schematics/angular                9.0.5
@schematics/update                 0.900.5
ng-packagr                         9.0.3
rxjs                               6.5.4
typescript                         3.7.5
webpack                            4.41.2

apexcharts: 3.15.0 ng-apexcharts: 1.2.1

igorkemack avatar Mar 11 '20 15:03 igorkemack

@igorkemack This issue Property left of ForInStatement expected node to be of a type ["VariableDeclaration","LVal"] but instead got null was fixed recently. Please update apexcharts to v3.16.1 and it will get resolved automatically.

junedchhipa avatar Mar 11 '20 19:03 junedchhipa

I'm also getting

Error: src/app/template.html:16:39 - error TS2322: Type '{ type: string; }' is not assignable to type 'ApexChart'.
  Types of property 'type' are incompatible.
    Type 'string' is not assignable to type 'ChartType'.

16 <apx-chart [series]="options.series" [chart]="options.chart" [title]="options.title"></apx-chart>

But, adding any seems to work.

public options: any = {
    title: {
      text: 'test'
    },
    chart: {
      type: 'bar'
    },
    series: [
      {
        name: 'sales',
        data: [30, 40, 35, 50, 49, 60, 70, 91, 125]
      }
    ],
    xaxis: {
      categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999]
    }
  };
"@angular": "~11.2.1",
"apexcharts": "^3.25.0",
"ng-apexcharts": "^1.5.8",

rochapablo avatar Mar 10 '21 10:03 rochapablo