#angular #angular-http
#angular #angular-http
Вопрос:
update(url: string, data: Object): Promise<Application> {
return this.http
.put(url, JSON.stringify(data), {headers: this.headers})
.toPromise()
.then(() => data)
.catch(this.handleError);
}
Использование вышеупомянутой функции с допустимым URL приводит к следующему исключению:
EXCEPTION: Uncaught (in promise): Response with status: 400 Bad Request for URL: null
Я использую @angular/http
модуль для выполнения запроса.
Странная вещь в этой проблеме заключается в том, что другие методы модуля работают нормально ( GET
, POST
и DELETE
) .
Я использую следующий заголовок 'Content-Type': 'application/json'
и InMemoryWebApiModule
чтобы имитировать ответ.
Вызов функции put с жестко заданным значением, таким как в следующем примере, приводит к тому же исключению.
this.http
.put('app/applications/1', JSON.stringify(data), {headers: this.headers})
.toPromise()
.then(() => data)
.catch(this.handleError);
Комментарии:
1. Разве это не все, что вам нужно знать: «для URL: null»?
2. Вы уверены
update()
, что вызывается с фактическимurl
значением?3. Да, жесткое кодирование URL-адреса в функции приводит к той же проблеме.
Ответ №1:
Недавно у меня была такая же проблема. Причиной этого было то, что в моих данных не было поля с именем id, которое однозначно идентифицирует каждый элемент. Модуль @angular/http сопоставляет запрошенные данные по своему идентификатору.