Angular 正确发送put请求

Angular 正确发送put请求,angular,typescript,Angular,Typescript,我用Express编写了put方法,如下所示,但在角度部分发送时出错。我知道我会出错,因为我没有将其作为对象发送,但我不知道如何将其作为对象发送。你能帮忙吗 controller.js(后端) 服务台 setStatus(statusId:number, statusValue:number ) { return this.httpService.put(`${this.url}/status/${statusId}`,statusValue); } 组件技术 this.word

我用Express编写了put方法,如下所示,但在角度部分发送时出错。我知道我会出错,因为我没有将其作为对象发送,但我不知道如何将其作为对象发送。你能帮忙吗

controller.js(后端)

服务台

setStatus(statusId:number, statusValue:number ) {
    return this.httpService.put(`${this.url}/status/${statusId}`,statusValue);
  }
组件技术

 this.wordsService.setStatus(getWord.id,1);
当我和邮递员一起测试时,它成功地运行了

http://localhost:3000/words/status/2

{ “地位”:1 }像这样试试

setStatus(statusId:number, statusValue:number ) {
 const params = new HttpParams().set('status', statusValue)
 return this.httpService.put(`${this.url}/status/${statusId}`,{parmas});
}

如果您的目标是发送此形状的JSON,那么希望有用

{ "status" : 1 }
然后你应该
放置一个对象,而不是一个原语。所以

setStatus(statusId:number, status: number) {
    return this.httpService.put(`${this.url}/status/${statusId}`, { status });
}


我在尝试时遇到了这样的结果

setStatus(statusId:number, statusValue) {
    
    const params = new HttpParams().set('status',statusValue)
    console.log(params.get('status')) // incoming value: 1  this is correct 
    console.log(`${this.url}/status/${statusId}`,params) // http://localhost:3000/words/status/1
    return this.httpService.put(`${this.url}/status/${statusId}`,params); // still status 0 
  }

你的邮递员请求的正文是什么样子的?正如您所指出的,听起来您非常接近,但可能只需要将您的
statusValue
包装在某种对象中。非常感谢您的回答,但它不起作用。请详细说明“它不起作用”。怎么搞的?发送了什么?有错误吗?如果是这样的话,那是什么错误?它可以正确地使用HttpParams,但是当它返回时,状态不会改变。@MichaelScott如果它正常工作,我想你的api不会更新statut,这就是为什么你不能得到更改的原因
setStatus(statusId:number, statusValue) {
    
    const params = new HttpParams().set('status',statusValue)
    console.log(params.get('status')) // incoming value: 1  this is correct 
    console.log(`${this.url}/status/${statusId}`,params) // http://localhost:3000/words/status/1
    return this.httpService.put(`${this.url}/status/${statusId}`,params); // still status 0 
  }