我有这段代码
export function LocalStorage(key?: string) {
return WebStorage(localStorage, key);
}
export function WebStorage(webStorage: Storage, key: string) {
return (target: Object, propertyName: string): void => {
key = key || propertyName;
let storageKey = WebStorageUtility.generateStorageKey(key);
let storedValue = WebStorageUtility.get(webStorage, key);
...
Object.defineProperty(target, propertyName, {
get: function() { ... },
set: function(value: any) { .. },
});
}
};
如果在 angular cli 上使用--aot
标记构建项目,如何解决以下错误。
错误中的错误:静态解析符号值时出错。 不支持函数调用。考虑更换功能或 lambda引用导出的函数(位置15:12) 原始.ts文件),在上面解析符号WebStorage 文件的
注意:位置15:12 在上面的代码中为(target: Object, propertyName: string): void => {
。
在角度分量中LocalStorage
用作属性装饰器,例如
@LocalStorage() username: string = "";
答案 0 :(得分:0)
不确定如何使用此 WebStorage ,它看起来像是一个奇怪的错误地方,但通常会做错误消息建议并提取功能。
因此,您可以重构WebStorage函数并将内容作为新的导出方法提取:
export function WebStorageInner(target: Object, propertyName: string) {
...
Object.defineProperty(target, propertyName, {
get: function() { ... },
set: function(value: any) { .. },
});
}
并在初始版本中使用它:
export function WebStorage(webStorage: Storage, key: string) {
...
return WebStorageInner(target, propertyName);
};