首页 > 解决方案 > 将数据发布到 RESTapi 角度 6

问题描述

嗨,我是 angular 6 的新手,我正在尝试将数据发布到 web api,但出现以下错误

异常:“400 错误请求:无法解码 JSON 对象:预期值:第 1 行第 1 列(字符 0)”

请告诉我哪里出错了,在此先感谢

我的服务:

addIncidents(newIncidents: Incidents): Observable<Incidents> {
return this.http.post<Incidents>('api/v1/events', newIncidents, {
    headers: new HttpHeaders({
        'Content-Type' : 'application/json'
    })
});

我的组件:

saveIncidents(formValues: any): void {
const newIncidents: Incidents = <Incidents>formValues;
console.log(newIncidents);
this.dataStorageService.addIncidents(newIncidents)
.subscribe(
  (data: Incidents) => console.log(data),
  (err: any) => console.log(err)
);
}

事故模型

export interface Incidents {

Incident_Start_Time: string;
Title: string;
Description: string;
Ticket: string;
}

html按钮

 <button type="button" class="btn btn-primary" (click)="saveIncidents()">Submit</button>

标签: angulartypescriptangular6vmware-clarity

解决方案


单击时,您正在调用saveIncidents()不带参数的方法。相反,在该saveIncidents()方法上,您期望一个参数并将其作为正文请求发送。但是该变量是未定义的,并且您的请求正文将为空。

因此,您应该在(click)事件中提供一个参数。我猜该参数将包含表单的所有值。在这种情况下,您应该在表单元素中设置一个模板变量:

<form #incidents="ngForm" ...>

然后您可以将此变量传递给该方法:

(click)="saveIncidents(incidents)"

这可能需要一些转变


推荐阅读