angular-cli解决符号的AOT错误

时间:2017-01-17 16:59:47

标签: angular angular-cli angular2-aot

我有一个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一起使用的方式将此服务注入我的应用程序?

干杯

0 个答案:

没有答案