2017-03-06 40 views
6

私はこの上に私の心と髪を失っています。 Angular 2でHighChartをインポートしていますが、余分なライブラリの一部を必要とします。これまでのところ私のコードで私は角2 - AOT - 関数 'ChartModule'を呼び出す、関数呼び出しがサポートされていません

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

を持っているしかし、私はエラーで、このエラーを取得

ERRORが静的に解決シンボル値に遭遇しておきます。関数 'ChartModule'を呼び出します。関数呼び出しはサポートされていません。ファンクションまたはラムダを、エクスポートされた機能への参照で置き換えることを検討してください。

だから私は

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

はまだ動作しませんみました。何か案は?角度2つの 角度CLIを使用

:1.0.0-beta.30

UPDATE - これは

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

    } 

を作品JayChase

に、それは部分的に取り組んで感謝を得たが、私は一度に2つを要求することはできません

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

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

ありがとうございました。

答えて

17

エクスポートされた機能を使用すると、この問題と回避策hereが発生する可能性があります。

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 { } 
+0

ありがとうございます。ドリルダウンが必要な場合は、別のファクトリを追加するだけですか? – Julian

+0

@Julian私はあなたが両方の必要な呼び出しを1つの関数で持つことができるはずだと思います。答えにコードを追加しました。 – JayChase

+0

関数内の関数が機能しませんでした – Julian

関連する問題