繁体   English   中英

对对象的角度HttpParams,Object.defineProperty创建属性,但超出范围

[英]Angular HttpParams to object, Object.defineProperty creates property but is out of scope

我试图通过基于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,它也没有在作用域上对它们定义的属性。

我觉得这里可能缺少一些非常简单的东西。 有人可以帮忙吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM