当前位置:  开发笔记 > 编程语言 > 正文

不支持函数调用.考虑使用对导出函数的引用替换函数或lambda

如何解决《不支持函数调用.考虑使用对导出函数的引用替换函数或lambda》经验,为你挑选了1个好方法。

我在我的应用程序中使用了APP_INITIALIZER,我在app.module.ts中设置了如下所示的必要导入:

@NgModule({
  ...
  providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => () => context.load(), deps: [ContextService], multi: true } ],
  ...
})

当我构建新鲜(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();
}

...然后改变了@NgModule的提供者部分:

@NgModule({
      ...
      providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: (context: ContextService) => loadContext(context), deps: [ContextService], multi: true } ],
      ...
    })

如上所述,构建仍然会失败并出现相同的错误.后续构建工作正常.

如何解决此初始构建错误?



1> Günter Zöchb..:

将内联闭包移动到一个函数:

function loadContext(context: ContextService) {
  return () => context.load();
}

@NgModule({
  ...
  providers: [ ..., ContextService, { provide: APP_INITIALIZER, useFactory: loadContext, deps: [ContextService], multi: true } ],
  ...
})

另请参见如何将从后端呈现的参数传递给angular2 bootstrap方法

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有