我正在尝试创建一种服务,该服务可以将文档中的单个字段放回服务器中
我有这个:
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"
答案 0 :(得分:2)
与其他开发人员在这里所说的不同,您无需创建新对象。
对对象使用动态键符号:
updateProperty(field: string, value: string): Observable<Property> {
return this.http.put<Property>(`${this.apiUrl}/property`, { [field]: value });
}
答案 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);
}