Javascript 需要单击两次以更新服务器-Angular2

Javascript 需要单击两次以更新服务器-Angular2,javascript,json,rest,angular,Javascript,Json,Rest,Angular,我有一个json,当我第一次点击更新它的按钮时,它没有被更新。有问题的按钮调用此功能: recusaProposta(){ this.propostaService.atualizaDisputa(this.disputa) .subscribe( res => this.disputa.propostas_realizadas++, error => console.log(error) ); } 现在,我第一次点击它时,json上

我有一个json,当我第一次点击更新它的按钮时,它没有被更新。有问题的按钮调用此功能:

recusaProposta(){
    this.propostaService.atualizaDisputa(this.disputa)
    .subscribe(
      res => this.disputa.propostas_realizadas++,
      error => console.log(error)
    );
}
现在,我第一次点击它时,json上什么也没有发生,但是如果我再次点击它,它会更新我想要的字段(
disputa.propostatas\u realizadas

服务内容如下:

import {Injectable} from '@angular/core';
import {Http, Headers, Response, RequestOptions} from '@angular/http';
import {Component} from '@angular/core';
import {Observable} from 'rxjs/Rx';
import {DisputaPropostaComponent} from './disputas-proposta.component';
import 'rxjs/add/operator/map';

@Injectable()
export class DisputaPropostaService{

    contato:Object[] = [];
    name: string;
    headers:Headers;
    url: string = 'http://localhost:3004/disputa';

    constructor(private http: Http){}

    atualizaDisputa (body:any): Observable<DisputaPropostaComponent[]>{
        let bodyString = JSON.stringify(body); // Stringify payload
        let headers      = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
        let options       = new RequestOptions({ headers: headers }); // Create a request option
        return this.http.put(`${this.url}/${body['id']}`, body, options) // ...using post request
                         .map((res:Response) => res.json()) // ...and calling .json() on the response to return data
                         .catch((error:any) => Observable.throw(error.json().error || 'Ocorreu um erro em nosso servidor, tente novamente mais tarde')); //...errors if any
    }
}
从'@angular/core'导入{Injectable};
从'@angular/Http'导入{Http,Headers,Response,RequestOptions};
从'@angular/core'导入{Component};
从'rxjs/Rx'导入{Observable};
从“./disputas proposta.component”导入{disputas propostacomponent};
导入'rxjs/add/operator/map';
@可注射()
导出类DisputPropostService{
contato:Object[]=[];
名称:字符串;
标题:标题;
url:string='1〕http://localhost:3004/disputa';
构造函数(私有http:http){}
atualizaDisputa(身体:任何):可观察{
让bodyString=JSON.stringify(body);//stringify有效负载
let headers=new headers({'Content-Type':'application/json'});//…将Content-Type设置为json
let options=newrequestoptions({headers:headers});//创建请求选项
使用post请求返回this.http.put(`${this.url}/${body['id']}`,body,options)/
.map((res:Response)=>res.json())/…并对响应调用.json()以返回数据
.catch((error:any)=>Observable.throw(error.json().error | | |“Ocorreu um erro em nosso servidor,tente novatemente mais tarde”);/…错误(如有)
}
}

你们能帮帮我吗?提前感谢。

原因是,在函数中,您返回disputa.propostatas\u realizada,然后再将其增加1。用下面的代码替换您的函数,它应该可以工作

recusaProposta(){
    this.propostaService.atualizaDisputa(this.disputa)
    .subscribe(
      res => ++this.disputa.propostas_realizadas,
      error => console.log(error)
    );
}

谢谢你的回答,但它仍然不起作用:(,在我点击按钮后,我要求打印
disputa.propostas_realizadas
,这会在第一时间更新,但json没有更新:(。好吧,无论如何,谢谢