2017-03-06 6 views
6

나는이 문제에 대해 내 마음과 머리카락을 잃고 있습니다. Angular 2로 HighCharts를 가져오고 있지만 추가 라이브러리를 필요로합니다. 지금까지 내 코드에서 나는 각도 2 - AOT - 'ChartModule'함수 호출, 지원되지 않는 함수 호출

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

을하지만 오류에

오류 정적 심볼 값을 해결 발생이 오류가 점점 계속. 함수 'ChartModule'호출. 함수 호출은 지원되지 않습니다. 함수 또는 람다를 내 보낸 함수에 대한 참조로 대체하는 것이 좋습니다.

그래서 나는이 작동하지 않습니다 아직
export function highchartsRequire:any { 
    return{ 
    require('highcharts'), 
    require('highcharts/modules/drilldown') 
    } 
} 
... 
ChartModule.forRoot(highchartsRequire()) 

을 시도했다. 어떤 아이디어? 각 2 각 CLI 사용

: 1.0.0-beta.30

UPDATE이 -이 부분이 작동 JayChase

을 감사 작업을 얻었다

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

    } 

그러나 한 번에 두 개씩 요구할 수는 없습니다.

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 필자는 두 함수 모두 한 함수에서 호출 할 수 있어야한다고 생각합니다. 대답에 코드를 추가했습니다. – JayChase

+0

함수의 함수가 작동하지 않았습니다 – Julian