【问题标题】:Need to click twice to update server - Angular2需要点击两次更新服务器 - Angular2
【发布时间】:2017-03-08 17:55:05
【问题描述】:

我有一个 json 在我第一次单击更新它的按钮时没有更新。有问题的按钮调用此函数:

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

现在,我第一次点击它时,json 上没有任何反应,但如果我再次点击它,它确实会更新我想要的字段 (disputa.propostas_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
    }
}

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

【问题讨论】:

    标签: javascript json rest angular


    【解决方案1】:

    原因是在你的函数中你返回 disputa.propostas_realizadas 之前将它增加 1。用下面的代码替换你的函数,它应该可以工作。

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

    【讨论】:

    • 感谢您的回答,但它仍然不起作用:(,在我点击按钮后我要求打印disputa.propostas_realizadas 并且第一次更新但json没有更新:(。好吧,无论如何,谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 2015-07-02
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多