在我的 Angular 应用程序中,我正在尝试在我的模块中使用工厂提供程序:
export function getMyFactory(): () => Window {
return () => window;
}
@NgModule({
providers: [
{ provide: WindowRef, useFactory: getMyFactory() },
],
})
export class MyModule {}
但这失败了:
为导出的符号"我的模块"生成的元数据中遇到错误:
收集的元数据包含将在运行时报告的错误:不支持 Lambda
我在 GitHub 的一个线程上发现了一个简单的解决方案: 静态函数不支持箭头lambda 由 haochi 发布
解决方案基本上是:
将结果分配给变量,然后返回变量
所以就我而言,我已经通过替换来解决:
export function getMyFactory(): () => Window {
return () => window;
}
跟:
export function getMyFactory(): () => Window {
const res = () => window;
return res;
}
只需像这样添加// @dynamic
注释:
// @dynamic
export function getMyFactory(): () => Window {return () => window;}
角度文档中的更多信息
同样的错误发生在我 Angular 库中。
我通过在angularCompilerOptions
下设置"strictMetadataEmit": false,
tsconfig.lib.json
来忽略它。
我在尝试将承诺作为函数返回时遇到了同样的问题,并替换了这个:
export function myFunc(): Function {
const result = () => ...
return result;
}
跟:
export function myFunc(){
const result = () => ...
return result;
}