Je suis tombé sur un drôle de problème où l'Angular2 de l' (RC1) service Http exécute le protocole http.post appeler deux fois. J'ai réglé mon application et je sais pour un fait, ce n'est pas un événement click question. Tous les appels qui conduisent à la base d'appels de service
public create(json: Object, params?: Object): Observable<T> {
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));
}
sont exécutées une fois. Puis, quand j'ai commencé à tracer la question, j'ai découvert que mon gestionnaire d' this.handleObjectResponse
est exécuté deux fois. J'ai donc cherché plus loin et atteint @angular/http/src/backends/xhr_backend.ts
où ils le font
constructor(req: Request, browserXHR: BrowserXhr, baseResponseOptions?: ResponseOptions) {
this.request = req;
this.response = new Observable<Response>((responseObserver: Observer<Response>) => {
let _xhr: XMLHttpRequest = browserXHR.build();
_xhr.open(RequestMethod[req.method].toUpperCase(), req.url);
// load event handler
...
..
J'ai donc mis un point d'arrêt sur this.request = req;
, puis un autre point d'arrêt sur let _xhr: XMLHttpRequest = browserXHR.build();
et j'ai trouvé, j'ai frappé le premier point d'arrêt une fois, mais ensuite, j'ai frappé le deuxième point d'arrêt de la fonction de rappel à deux reprises.
Cela a été me rend fou j'ai donc voulu vérifier si quiconque est familier avec la angular2 internes pourrait jeter quelque lumière si cela ressemble à un bug ou quelque chose que j'ai fait de mal.
Dans mon code, j'ai créé abstraite générique classes de service: GenericService et de FullService qui s'étend GenericService. Ces deux sont abstraites et l'utilisation des génériques et le réel, les classes de service qui sont alors injectés dans les différents composants de tous, soit GenericService ou de FullService. Avez-vous les gars pense que cette configuration pourrait être responsable pour le double post exécutions?
Toutes les idées sont appréciées!
Merci à l'avance!
P. S.
Ce n'est pas le cas avec les obtient, mais il arrive aussi avec des options de vente.