动态将属性发布到Angular中的API

时间:2018-09-17 11:36:22

标签: angular

我正在尝试创建一种服务,该服务可以将文档中的单个字段放回服务器中

我有这个:

updateProperty(field: string, value: string): Observable<Property> {
    return this.http.put<Property>(`${this.apiUrl}/property`, { field, value });
}

但是当我打电话给它时:

updateProperty("Name", "John")

它将创建以下标题:

field : "Name"
value : "John"

如何更改此设置,以便标题变为:

"Name" : "John"

更新 当我尝试{field:value}时,标题变为:

field: "John"

3 个答案:

答案 0 :(得分:2)

与其他开发人员在这里所说的不同,您无需创建新对象。

对对象使用动态键符号:

updateProperty(field: string, value: string): Observable<Property> {
  return this.http.put<Property>(`${this.apiUrl}/property`, { [field]: value });
}

Working stackblitz

答案 1 :(得分:1)

这与对象分解的工作方式有关。 {field, value}实际上是指{field: field, value: value}。为了得到你想要的东西,你必须创建一个对象,例如。 obj,然后使用obj[field] = value进行构造。然后将其传递到您的put请求中,替换当前指定的{field, value}

答案 2 :(得分:0)

任何对象都可以解析为“数组”语法样式:

const field = "name";
const value = "John";

const data = {};
data[field] = value;
console.log(data);

因此您可以执行以下操作:

updateProperty(field: string, value: string): Observable<Property> {
    let header = {};
    header[field] = value;
    return this.http.put<Property>(`${this.apiUrl}/property`, header);
}