/ / Angular 2 - AOT - Funzione di chiamata 'ChartModule', chiamate di funzione non supportate - angular, angular-cli, angular2-highcharts

Angular 2 - AOT - Funzione di chiamata 'ChartModule', chiamate di funzione non supportate - angolari, angolari-cli, angolari2-highcharts

Sto perdendo la testa e i capelli per questo. Sto importando HighCharts in Angular 2 ma ho bisogno di alcune delle sue librerie extra. Finora nel mio codice ho

import {ChartModule} from "angular2-highcharts";
@NgModule({
....
imports:[
ChartModule.forRoot(require("highcharts"), require("highcharts/modules/drilldown"))})
]

Ma continuo a ricevere questo errore

ERRORE in Errore rilevato simbolo di risoluzionevalori staticamente. Chiamata della funzione "ChartModule". le chiamate di funzione non sono supportate. Considera di sostituire la funzione o lambda con un riferimento a una fucntion esportata.

Così ho provato

export function highchartsRequire:any {
return{
require("highcharts"),
require("highcharts/modules/drilldown")
}
}
...
ChartModule.forRoot(highchartsRequire())

Non funziona ancora. Qualche idea?

Usando angolare 2 cli angolare: 1.0.0-beta.30

AGGIORNAMENTO - parzialmente funzionato grazie a JayChase

Questo funziona

export function highchartsFactory() {
return require("highcharts");

}

Ma non posso richiederne due alla volta

declare var require: any;
export function highchartsFactory() {
return function () {
require("highcharts");
require("highcharts/modules/drilldown")
};
}

@NgModule({
imports: [
ChartModule
],
providers: [
{
provide: HighchartsStatic,
useFactory: highchartsFactory
}
],

Qualche idea? Grazie.

risposte:

19 per risposta № 1

C'è un problema aperto per questo e una soluzione alternativa Qui usando una funzione esportata.

    import { BrowserModule } from "@angular/platform-browser";
import { NgModule } from "@angular/core";
import { FormsModule } from "@angular/forms";
import { HttpModule } from "@angular/http";
import { ChartModule } from "angular2-highcharts";
import { HighchartsStatic } from "angular2-highcharts/dist/HighchartsService";

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

declare var require: any;

export function highchartsFactory() {
const hc = require("highcharts");
const dd = require("highcharts/modules/drilldown");
dd(hc);

return hc;
}

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
ChartModule
],
providers: [
{
provide: HighchartsStatic,
useFactory: highchartsFactory
}
],
bootstrap: [AppComponent]
})
export class AppModule { }