首页 > 解决方案 > Angular HttpParams 到对象,Object.defineProperty 创建属性但超出范围

问题描述

我试图通过基于 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,它也没有在范围内定义它们的属性。

我觉得我可能在这里遗漏了一些非常简单的东西。任何人都可以帮忙吗?

标签: javascriptangulartypescript

解决方案


它们不可枚举,这就是为什么Object.assign找不到它们。但是,Object.defineProperty当您可以直接分配属性时,没有理由在这里使用,也没有理由在 .旁边Object.assign创建另一个对象。做就是了foonewObject

private transformParamsToObject(params: HttpParams) {
    let newObject = {};
    for (const x of params.keys())
        newObject[x] = params.get(x);
    return newObject;
}

推荐阅读