Angular:收集的元数据包含运行时会报错:Lambda not supported

Fra*_*rzi 8 typescript angular-providers angular-factory angular angular-dependency-injection

在我的 Angular 应用程序中,我试图在我的模块中使用工厂提供程序

export function getMyFactory(): () => Window {
  return () => window;
}

@NgModule({
  providers: [
    { provide: WindowRef, useFactory: getMyFactory() },
  ],
})
export class MyModule {}
Run Code Online (Sandbox Code Playgroud)

但这失败了:

在为导出的符号“MyModule”生成的元数据中遇到错误:

收集的元数据包含运行时会报错:Lambda not supported

Fra*_*rzi 18

我在 GitHub 的一个线程上找到了一个简单的解决方案:haochi发布的静态函数中不支持 Arrow lambda

解决方法基本上是:

将结果分配给变量,然后返回变量


所以就我而言,我已经通过替换解决了:

export function getMyFactory(): () => Window {
  return () => window;
}
Run Code Online (Sandbox Code Playgroud)

和:

export function getMyFactory(): () => Window {
  const res = () => window;
  return res;
}
Run Code Online (Sandbox Code Playgroud)


emm*_*bee 9

只需添加这样的// @dynamic评论:

// @dynamic
export function getMyFactory(): () => Window {return () => window;}
Run Code Online (Sandbox Code Playgroud)

角度文档中的更多信息


adr*_*ons 5

我在 Angular 库中也发生了同样的错误。

我通过设置忽略了它"strictMetadataEmit": false,tsconfig.lib.jsonangularCompilerOptions