我试图通过基于HttpParams中的内容在对象上动态创建属性来将HttpParams转换为对象。
private transformParamsToObject(params: HttpParams) {
let newObject = {};
params.keys().forEach(x => Object.defineProperty(newObject, x, { value: params.get(x) }));
const foo = Object.assign({}, newObject);
return foo;
}
从调试器中可以看到,它定义了属性,但是当我将该对象分配给foo时,它们似乎不在范围内。即使我只是返回newObject,它也没有在作用域上对它们定义的属性。
我觉得这里可能缺少一些非常简单的东西。有人可以帮忙吗?
答案 0 :(得分:1)
They are not enumerable,这就是Object.assign
找不到它们的原因。但是,当您可以直接分配属性时,没有理由在这里使用Object.defineProperty
,也没有理由使用Object.assign
在foo
旁边创建另一个newObject
对象。随便
private transformParamsToObject(params: HttpParams) {
let newObject = {};
for (const x of params.keys())
newObject[x] = params.get(x);
return newObject;
}