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を必要とするすべてのコンポーネントのコンストラクタにドロップする必要はありません。
ありがとうございました。
コメントはどのように削除されましたか? –
@GünterZöchbauer - 私たちの会話はどうでしたか? –