1

Angular CLI(1.0.0-rc.1)アプリケーションをプロダクト用にビルドしようとしましたが、AOTエラーが発生しました。私は実際に2つのアプリを持っています:いくつかのUIウィジェットのために、プライマリアプリとnpmインストールされたアプリ。 UIウィジェットアプリには、いくつかの設定データ(パス、キーなど)が必要です。エラーでエラーが発生しました。シンボル値を静的に解決しました。関数呼び出しの呼び出しがサポートされていません

ここで設定データをアセンブルし、UIウィジェットモジュールに渡し、私の主なアプリで私のコードです:

export const config: ConfigData = 
{ 
    UrlRoot: 'XXXX', 
    Key: 'ZZZZ' 
} 

@NgModule({ 
    imports: 
    [ 
     UiWidgetModule.forRoot(config)  
    ], 
    declarations: 
    [], 
    exports: 
    [] 
}) 
export class CoreModule 
{ 
    static forRoot(): ModuleWithProviders 
    { 
     return { 
      ngModule: CoreModule, 
      providers: 
      [] 
     }; 
    } 
} 

、ここではUIWidgetModuleです:

export function configHelperFactory(config: ConfigData) 
{ 
    ClientConfigService.ConfigModel = config; 
    return ClientConfigService; 
} 

@NgModule({ 
    imports: 
    [ 
     CommonModule 
    ], 
    declarations: 
    [ 
     //COMPONENTS 
    ], 
    exports: 
    [ 
     //COMPONENTS 
    ], 
    entryComponents: 
    [ 
     //COMPONENTS 
    ], 
    providers: 
    [ 
    ] 
}) 
export class UiWidgetModule 
{ 
    static forRoot(config: ConfigData): ModuleWithProviders 
    { 
     return { 
      ngModule: UiWidgetModule, 
      providers: 
      [ 
       ClientConfigService, 
       { 
        provide: ClientConfigService, 
        useFactory: configHelperFactory(config) 
       } 
      ] 
     }; 
    } 
} 

私UIWidgetModuleサービス(ClientConfigServiceを使用しています)を使用して、クライアントから構成データを保持します。後続のコンポーネントは、ClientConfigServiceのさまざまな機能を使用して設定データを使用します。キッカーはClientConfigServiceは静的です。ここで

がClientConfigServiceです:

import { ConfigData } from "../models/index"; 

export class ClientConfigService 
{ 
    static ConfigModel: ConfigData ; 

    static BuildMediaUrl(nodeId: string) : string 
    { 
     return ClientConfigService.ConfigModel.UrlRoot+ '/' + nodeId; 
    };  

    static GetKey(): string 
    { 
     return ClientConfigService.ConfigModel.Key; 
    }; 
} 

生産(AOT)のためのビルドプロセスが無残ClientConfigServiceの静的変数の設定値を設定しようとして失敗しました。私のウィジェットモジュールで設定データをどのように消費するのですか?静的なサービスを提供してデータを提供するのが大好きなので、ClientConfigServiceを必要とするすべてのコンポーネントのコンストラクタにドロップする必要はありません。

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

+0

コメントはどのように削除されましたか? –

+0

@GünterZöchbauer - 私たちの会話はどうでしたか? –

答えて

0

GünterZöchbauerとの会話がどのように削除されたか。なぜ、誰がそれを削除したのか分かりません。

はここギュンターによって作られたコードの提案です:

​​

問題は、私はClientConfigService.ConfigModelを取り込むことができますので、私はconfigHelperFactoryにforRootに渡さconfigパラメータを得るのですかですか?

Günterは 'export const config:ConfigModel'を提案しました。 constを作成するのはconstなので、値で初期化する必要があり、constを初期化した後は変更することはできません。

したがって、ClientConfigService.ConfigModelにforRootに渡される値をどのように設定しますか。

関連する問題