ASP NET Core 2.0 + угловой отклик 4 json - PullRequest
0 голосов
/ 29 мая 2018

У меня есть проект ASP NET Core 2.0.Для клиентской стороны я использую угловой 4. Я пытаюсь реализовать дескриптор API-запроса на клиентской стороне.

Итак, в моем контроллере у меня есть

public IActionResult AddWorkSchedule(int employeeId, [FromBody] WorkScheduleBaseRequest request)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    return Ok();
}

Итак, я жду, чтобы получитьмассив ошибок на стороне клиента, но я получил это в виде текста. enter image description here

Я использую net httpClient в agular 4 и вызываю api следующим образом

addWorkSchedule(employeeId: number, workSchedule: WorkSchedule): Promise<any> {
        return this.http
            .post('/api/employee/' + employeeId + '/workschedule/', workSchedule, { observe: 'response', responseType: 'json' })
            .toPromise();
    }

и обработать его в моем компоненте следующим образом

this.employeeService
    .addWorkSchedule(this.employee.employeeId, workSchedule).then(
    (success) => {
        console.log(success);
        },
        (error: HttpErrorResponse) => {
            console.log(error);
            console.log(error.error);
        });

Мой вопрос: почему свойство 'error' является текстом, а не массивом при ответе на ошибку, и как я могу сделать его таким, как массив?

Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Я обнаружил проблему, это ошибка httpClient в angular 4. Более подробно описана проблема https://github.com/angular/angular/issues/19888. Короче говоря - ошибка ответа «ошибка» имеет неправильный тип.

Решение Iзакончить с:

this.employeeService
            .addWorkSchedule(this.employee.employeeId, workSchedule).then(
                (success) => {
                    console.log(success);
                },
                (error: HttpErrorResponse ) => {
                    let json = JSON.parse(error.error); // parse it to json as requested type is json
                    console.log(json); // json object
                    console.log(json.length); // json objects count == string errors count that came from server
                });
...