Angular 5 我正在尝试构建一个使用Angular在我的API上创建资源的函数。 在我的employee.service.ts文件中,我有一个名为“saveEmployee”的方法,该方法由Employee.componenet.ts上的函数“addEmployee”调用。当在HTML上按下“Save Employee”按钮时,将调用函数“addEmployee”页。 这是addEmployee函数:
addEmployee(model) {
this.loading = true;
model.contractorId = parseInt(model.contractorId);
this.employeeService.saveEmployee(model)
.subscribe(
data => {
console.log('saved successfully!!!');
return true;
},
error => {
console.error("Error creating employee!");
return Observable.throw(error);
});
}
这是saveEmployee:
saveEmployee(employee: Employee): Observable<Employee> {
let body = JSON.parse(JSON.stringify(employee));
return this.http.post(this.resourceUrl, body);
}
由于“无效的媒体类型”而失败,因为由于某种原因推送到API的JSON对象具有这样的外观:
{
firstName:"arjan",
lastName:"gjoni",
fedexId:"7777",
contractorId:20
}
如果您发现这不是有效的JSON对象,因为属性名称不在引号中。
在Json.stringify()和Jason对象在那里有效之后,我在saveEmployee函数上放置了一个console.log()。我还在addEmployee()函数上放置了一个console.log(),那里的JSON对象很奇怪(就像帖子上的那个)。 我还检查了控制台,RequestPayload,在那里JSON对象也无效。
我将不胜感激任何帮助。我正在使用Angular 5
答案 0 :(得分:0)
尝试将employee
对象作为this.http.post
方法的第二个参数传递,而不是将其字符串化并解析为正文对象。
Angular应该能够处理本机Javascript对象并将其正确地发布到服务器。
答案 1 :(得分:0)
试试这个:
let body = JSON.stringify(employee);
return this.http.post(this.resourceUrl, body);