отправить данные в RESTapi угловой 6 - PullRequest
0 голосов
/ 16 октября 2018

Привет, я новичок в angular 6 Я пытаюсь опубликовать данные в веб-интерфейсе 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>

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Не ожидается тип контента как JSON.

Просто удалите заголовки или измените его на "text/plain".

headers: {'Content-Type': 'text/plain'}
0 голосов
/ 16 октября 2018

При нажатии вы вызываете метод saveIncidents() без параметров.В методе saveIncidents() вместо этого вы ожидаете один параметр и отправляете его как запрос тела.Но эта переменная не определена, и тело вашего запроса будет пустым.

По этой причине вы должны указать параметр в вашем (click) событии.Этот параметр, я думаю, будет содержать все значения формы.В этом случае вы должны установить переменную шаблона в элементе формы:

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

Затем вы можете передать эту переменную методу:

(click)="saveIncidents(incidents)"

Это может потребовать некоторого преобразования

...