我有一个Angular2 cli项目(cli 1.0.0-beta.21)
使用ng build --prod和--dev
时,它可以构建并运行良好但如果我尝试 ng build --prod --aot ,我会收到以下错误
在静态解析符号值时遇到错误。函数调用 不受支持。考虑用a替换函数或lambda 引用导出的函数,解析符号AppModule
I have looked at this github issue但我无法弄清楚我哪里出错了。
这是我的app.module.ts文件:
import { BrowserModule } from '@angular/platform-browser';
...
import { LocationStrategy, HashLocationStrategy } from '@angular/common';
import {
dnnModId,
dnnSF,
dnnPortalId,
dnnTabId,
dnnEditMode,
AuthService,
DnnService
} from './services';
import { AppRoutes } from './app.routes';
...
import { ShiftPartialPipe } from './pipes/shift-partial.pipe';
@NgModule({
declarations: [
AppComponent,
...
ShiftEditComponent
],
imports: [
BrowserModule,
...
HttpModule
],
providers: [
AuthGuard,
AuthService,
DnnService,
{ provide: LocationStrategy, useClass: HashLocationStrategy },
{ provide: dnnModId, useValue: moduleId },
{ provide: dnnTabId, useValue: tabId },
{ provide: dnnPortalId, useValue: portalId },
{ provide: dnnEditMode, useValue: editMode },
{ provide: dnnSF, useValue: $.ServicesFramework(moduleId) }
],
bootstrap: [AppComponent]
})
export class AppModule { }
我使用这样的不透明代币将一些外部值导入我的应用程序:
export let dnnModId: any = new OpaqueToken('moduleId');
export let dnnPortalId: any = new OpaqueToken('portalId');
export let dnnTabId: any = new OpaqueToken('tabId');
export let dnnSF: any = new OpaqueToken('sf');
export let dnnEditMode: any = new OpaqueToken('editMode');
这可能是我的问题吗?
我的app.module.ts
中存在问题 { provide: dnnSF, useValue: $.ServicesFramework(moduleId) }
从以下位置导入值:
export let dnnSF: any = new OpaqueToken('sf');
我已将以下内容添加到我的typing.d.ts文件中
declare var $: any;
对于上下文:此应用程序必须存在于CMS中,该CMS使用jquery函数来构建对数据的后端api的请求。所以我需要在我的应用程序中使用该服务,以获得api请求所需的验证令牌。 (我知道这不太理想,但有必要。)
如何以与AOT一起使用的方式将此服务注入我的应用程序?
干杯