Ich versuche, meine Angular CLI (1.0.0-rc.1) App für die Produktion zu bauen und bekomme einen AOT-Fehler. Ich habe tatsächlich 2 Apps: primäre App und eine npm installierte App für einige UI-Widgets. Die UI-Widgets-App erfordert einige Konfigurationsdaten (Pfade, Schlüssel usw.).ERROR in Fehler beim statischen Auflösen von Symbolwerten. Calling Function Calls werden nicht unterstützt
Hier ist mein Code in meiner primären Anwendung, die die Konfigurationsdaten assembliert und übergibt sie an UI Widget-Modul:
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:
[]
};
}
}
und hier ist die 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)
}
]
};
}
}
Mein UIWidgetModule verwendet einen Service (ClientConfigService) um die Konfigurationsdaten vom Client zu halten. Nachfolgende Komponenten verwenden verschiedene Funktionen in ClientConfigService, um die Konfigurationsdaten zu verwenden. Der Kicker ist ClientConfigService ist statisch.
hier 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;
};
}
Der Erstellungsprozess für die Produktion (AOT) scheitert kläglich versucht, den Konfigurationswert für die statische Variable von ClientConfigService einzustellen. Wie verzehre ich die Konfigurationsdaten in meinem Widget-Modul? Ich liebe es, einen statischen Dienst zu haben, der die Daten liefert, so dass ich ClientConfigService nicht im Konstruktor jeder Komponente löschen muss, die sie benötigt.
Danke.
Wie kommen die Kommentare gelöscht? –
@ Günter Zöchbauer - was ist mit unserem Gespräch passiert? –