Angular2 http.post выполняется дважды

Я столкнулся с какой-то странной проблемой, когда служба Http Angular2 (RC1) Http выполняет вызов http.post дважды. Я отлаживал свое приложение, и я знаю, что это не проблема с событием клика. Все вызовы, ведущие к основному вызову службы

public create(json: Object, params?: Object): Observable { let body = JSON.stringify([json]); let headers = this.getHeaders(); let options = new RequestOptions({ headers: headers }); return this._http.post(this.createURL(this.getCreateURL(), [], params), body, options) .map(res => this.handleObjectResponse(res)); } 

выполняются один раз. Затем, когда я начал отслеживать проблему, я узнал, что мой обработчик this.handleObjectResponse выполняется дважды. Поэтому я углубился дальше и достиг @angular/http/src/backends/xhr_backend.ts где они делают это

 constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) { this.request = req; this.response = new Observable((responseObserver: Observer) => { let _xhr: XMLHttpRequest = browserXHR.build(); _xhr.open(RequestMethod[req.method].toUpperCase(), req.url); // load event handler ... .. 

Поэтому я поставил this.request = req; останова на this.request = req; а затем другую let _xhr: XMLHttpRequest = browserXHR.build(); останова на let _xhr: XMLHttpRequest = browserXHR.build(); и я узнал, что однажды ударил первую точку останова, но затем дважды ударил вторую точку останова из обратного вызова.

Это заставило меня замочить, поэтому я хотел проверить, может ли кто-нибудь, знакомый с внутренними элементами angular2, пролить некоторый свет, похоже ли это на ошибку или что-то, что я сделал неправильно.

В моем коде я создал несколько абстрактных classов общих сервисов: GenericService и FullService, который расширяет GenericService. Оба эти являются абстрактными и используют generics, а реальные classы обслуживания, которые вводятся в различные компоненты, распространяются либо на GenericService, либо на FullService. Вы, ребята, думаете, что эта установка может быть причиной двойной казни?

Все идеи приветствуются!

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

PS

Это не происходит, но это происходит и с puts.

Служба http возвращает холодный наблюдаемый, который выполняется на каждой подписке , вы хотите преобразовать его в горячую наблюдаемую, которая будет выполняться только в первой подписке и использовать одно и то же значение для последующих подписчиков.

Чтобы преобразовать все, что вам нужно сделать, это поделиться им:

 return this._http.post(this.createURL(this.getCreateURL(), [], params), body, options) .map(res => this.handleObjectResponse(res)) .share(); 

Это происходило со мной, потому что у меня (key.enter)="someSubmitFunction()" в одном из полей ввода формы. Когда я нажму «Enter» в этом поле, форма будет отправляться дважды. По-видимому, это не было необходимо. Когда я удалю это, форма все равно будет отправлена, когда я нажму Enter, но теперь только один раз.

 its happening because HTTP OPTIONS executed first, and you have to restrict unwanted HTTP method before executing your Logic, always use isset method,see example below if(isset($_POST)) { $name = $_POST["name"]; $country = $_POST["country"]; $sql = 'INSERT INTO user values("' . $name . '","' . $country . '")'; if ( $conn->query($sql)=== TRUE) { $outp = "Inserted " . $name . " and " . $country; echo json_encode($outp); } else { echo json_encode("Error: " . $sql . "
" . $conn->error); } } here it will insert row in table only when its POST METHOD.
  • использование внешних JS-библиотек в моем проекте с угловым 2
  • Как использовать переменную для определения templateUrl в Angular2
  • Угловое 2: Как обнаружить изменения в массиве? (свойство @input)
  • Угловая 2 Загрузка файла из типа ввода = файл
  • Как сделать HTTP-запросы с поддержкой CORS в Angular 2?
  • Интеграция дизайна материалов Lite с помощью Angular2
  • Как передать аргументы url (строку запроса) в HTTP-запрос на Angular?
  • Эквивалент $ compile в Angular 2
  • Как скрыть элемент при прокрутке страницы?
  • DI с циклической зависимостью от пользовательских HTTP и ConfigService
  • Угловой 2 http.post () не отправляет запрос
  • Давайте будем гением компьютера.