我知道我不是唯一一个对这个词有疑问的人。但是有角度的家伙对这个术语有大约 23 个问题。我尝试了很多不同的东西。一个很重要:我尝试了与他们相同的方式@angular/http
(导出裸工厂函数)。
事实是:它有效 - 代码不正确。但是当我尝试导入模块时,我得到了这个错误:
ERROR in Error encountered resolving symbol values statically. Calling function
'TranslatorConfig', function calls are not supported. Consider replacing the
function or lambda with a reference to an exported function, resolving symbol
TranslatorModule.forRoot
当我在此错误后运行 ng serve 并触摸文件时,它会重新编译而不会出现错误。但是无论我尝试构建什么(ng build -e prod --aot false
),我都会收到此错误并且构建停止。当我"strictMetadataEmit": true
在 tsconfig.json 中设置时,我也会收到此错误。我有一个TranslatorModule.metadata.json
- 这不会是错误。
为什么它不起作用?此错误消息的详细含义是什么?什么是符号值,为什么它必须是静态的?如何让它工作?
对于测试,您只需安装 angular2-translator@2.0.0-alpha3。你可以在 github 上找到代码:https ://github.com/tflori/angular2-translator/tree/2.0
我只是尝试使用这些导出的函数和不同的提供程序,如下所示。
export function createTranslatorConfig(config: any = {}) {
return new TranslatorConfig(config);
}
export function createTranslator(translatorContainer: TranslatorContainer, module: string) {
return translatorContainer.getTranslator(module);
}
// ...
export class TranslatorModule {
public static forRoot(config: any = {}, module: string = "default"): ModuleWithProviders {
return {
ngModule: TranslatorModule,
providers: [
{ provide: "TranslatorConfigOptions", useValue: config },
{ provide: TranslatorConfig, useFactory: createTranslatorConfig, deps: [ "TranslatorConfigOptions" ] },
{ provide: "TranslatorModuleName", useValue: module },
{
provide: Translator,
useFactory: createTranslator,
deps: [ TranslatorContainer, "TranslatorModuleName" ],
},
],
};
}
}
结果只是另一个错误消息(现在符号 NgModule 的“emakeDecorator”有问题:ERROR in Error encountered resolving symbol values statically. Calling function 'ɵmakeDecorator', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol NgModule