Angular5

时间:2018-02-07 20:16:30

标签: angular typescript angular5 angular4-forms

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

2 个答案:

答案 0 :(得分:0)

尝试将employee对象作为this.http.post方法的第二个参数传递,而不是将其字符串化并解析为正文对象。
Angular应该能够处理本机Javascript对象并将其正确地发布到服务器。

答案 1 :(得分:0)

试试这个:

let body = JSON.stringify(employee);
return this.http.post(this.resourceUrl, body);