HGP*_*GPB 2 lambda typescript angular
我在我的应用程序中使用了APP_INITIALIZER,我在app.module.ts中设置了如下所示的必要导入:
@NgModule({
...
providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => () => context.load(), deps: [ContextService], multi: true } ],
...
})
Run Code Online (Sandbox Code Playgroud)
当我构建新鲜(ng build -watch)时,我得到以下错误,后续构建工作正常.
ERROR in Error遇到静态解析符号值.不支持函数调用.考虑使用对导出函数的引用替换函数或lambda(原始.ts文件中的位置24:46),在C:/.../ app.module.ts中解析符号AppModule
我尝试() => context.load()在同一个文件中移入导出的函数:
export function loadContext(context: ContextService) {
return () => context.load();
}
Run Code Online (Sandbox Code Playgroud)
...然后改变了@NgModule的提供者部分:
@NgModule({
...
providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => loadContext(context), deps: [ContextService], multi: true } ],
...
})
Run Code Online (Sandbox Code Playgroud)
如上所述,构建仍然会失败并出现相同的错误.后续构建工作正常.
如何解决此初始构建错误?
将内联闭包移动到一个函数:
function loadContext(context: ContextService) {
return () => context.load();
}
@NgModule({
...
providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: loadContext, deps: [ContextService], multi: true } ],
...
})
Run Code Online (Sandbox Code Playgroud)
另请参见如何将从后端呈现的参数传递给angular2 bootstrap方法
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |