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

Sh *_*eeb 14 angular-formly angular ngx-formly

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

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

export const fileTypeModule = FileTypeModule.forRoot();

@NgModule({
  imports: [fileTypeModule]

})
Run Code Online (Sandbox Code Playgroud)

Flo*_*n D 33

已经多次看到这种情况发生,上次使用 Angular 9,发生在ng build <my-library>,对于所有初始化为forRoot

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

 "angularCompilerOptions": {
    "fullTemplateTypeCheck": true
  }
Run Code Online (Sandbox Code Playgroud)

所述fullTemplateTypeCheck编译器开关实际上使模板编译器的结合表达验证阶段。在此处查看更多详细信息。


Rea*_*lar 5

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

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

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

export const fileTypeModule = FileTypeModule.forRoot();
Run Code Online (Sandbox Code Playgroud)

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唯一的解决方法是联系作者并请求他们解决问题,或者您分叉该库并自行修复。