angular2生成问题使用功能工厂

angular2生成问题使用功能工厂,angular,dependency-injection,Angular,Dependency Injection,作为angular的初学者,我在尝试通过angular cli构建应用程序时遇到了一个问题 在此之后: 我的appModule看起来像: ... providers: [ { provide: HttpService, useFactory: (backend: XHRBackend, options: RequestOptions) => { return new HttpService(backend, options); }, deps: [XHRBackend, Req

作为angular的初学者,我在尝试通过angular cli构建应用程序时遇到了一个问题

在此之后:

我的appModule看起来像:

...
providers: [
{ provide: HttpService, useFactory: (backend: XHRBackend, options:     RequestOptions) => {
return new HttpService(backend, options); },
  deps: [XHRBackend, RequestOptions]}
]
...
在构建时,我得到:

Error: Error encountered resolving symbol values statically. Function calls are
not supported. Consider replacing the function or lambda with a reference to an
exported function (position 63:39 in the original .ts file), resolving symbol Ap
pModule in ../angular/app/src/app/app.module.ts
at positionalError (..\angular\app\node_modules\@angular\compiler-c
li\src\static_reflector.js:595:18)

当我使用
ng serve
时,应用程序工作没有任何问题。

我以前看到过这一点,并不确定是什么原因导致了这个错误(即为什么它在某些情况下工作,而在其他情况下不工作),但是你可以按照错误所说的那样解决它:“考虑用一个引用替换函数或lambda 导出函数”


使用显式函数代替内联函数:

函数httpFactory(后端:XHRBackend,选项:RequestOptions){
返回新的HttpService(后端,选项);
}
。。。
提供者:[{提供:HttpService,使用工厂:httpFactory,
deps:[XHRBackend,RequestOptions]}
]
...
试试这个:

导出函数httpServiceFactory(后端:XHRBackend,选项:RequestOptions){
返回新的HttpService(后端,选项);
}  
供应商:[
{ 
提供:HttpService,
useFactory:httpServiceFactory,
deps:[XHRBackend,RequestOptions]
}
]
export function httpFactory(backend: XHRBackend, options: RequestOptions) {
  return new HttpService(backend, options);
}

...

providers: [
  { 
    provide: HttpService,
    useFactory: httpFactory,
    deps: [XHRBackend, RequestOptions]
  }
]