17

尝试设置ngx-formly-material-file,但出现错误:装饰器不支持函数调用,但调用了“FileTypeModule”

我试图导出 FileTypeModule,但得到了同样的错误

export const fileTypeModule = FileTypeModule.forRoot();

@NgModule({
  imports: [fileTypeModule]

})
4

2 回答 2

36

已经看到这种情况发生了很多次,上次使用 Angular 9,发生ng build <my-library>forRoot

我添加了tsconfig.lib.json这个,错误就消失了。

 "angularCompilerOptions": {
    "fullTemplateTypeCheck": true
  }

编译器开关实际上启用了模板编译器的fullTemplateTypeCheck绑定表达式验证阶段。在此处查看更多详细信息。

于 2020-05-11T19:41:38.753 回答
5

装饰器不支持函数调用,但调用了“FileTypeModule”

我没有关于此错误消息的好消息。

这是 Angular 8.2.x 及更高版本的一个问题,它引入了对如何生成元数据的限制,NgModule这是最近更新以支持 Ivy 的副作用。

export const fileTypeModule = FileTypeModule.forRoot();

修复此错误的唯一方法是修改forRoot()模块中的函数。在该函数中可以做什么有严格的限制。

您不能动态生成任何提供程序、使用箭头函数或有条件地创建NgModule元数据。

这个错误现在在多个库中有很长的历史:

https://github.com/ng-packagr/ng-packagr/issues/727

https://github.com/angular/angular/issues/23609

你可以在这里找到我解决这个问题的具体方法:

https://github.com/angular/angular/issues/23609#issuecomment-561615821

如果您不是作者,FileTypeModule唯一的解决方法是联系作者并请求他们解决问题,或者您分叉库并自己进行修复。

于 2020-01-20T12:26:37.867 回答