I created an object and filled it with some properties using Object.defineProperty then fed that object as an argument for Angular's http.put but for some reason the back end is receiving an empty body.
let newData = {};
Object.defineProperty(newData, 'newTitle', {
value: this.taskForm.value.title,
});
Object.defineProperty(newData, 'newDescription', {
value: this.taskForm.value.description,
});
Object.defineProperty(newData, 'newSubtasks', {
value: this.taskForm.value.subtasks,
});
this.http.editTask(this.taskId, newData).subscribe();
editTask implementation
editTask(taskId: string, data: any) {
return this.http.put(`http://localhost:3000/edittask/${taskId}`, data);
}
CodePudding user response:
I'm not prefer to Object.defineProperty but this will solved your problem.
// code
let newData = {};
Object.defineProperty(newData, 'newTitle', {
value: 1,
});
Object.defineProperty(newData, 'newDescription', {
value: 2,
});
Object.defineProperty(newData, 'newSubtasks', {
value: 3,
});
const data = {};
Object.getOwnPropertyNames(newData).forEach(key => data[key] = newData[key]);
this.http.editTask(this.taskId, data).subscribe();
CodePudding user response:
Try JSON.stringify()
this.http.editTask(this.taskId, JSON.stringify(newData)).subscribe();
