angular4上的http.put方法

时间:2017-07-11 15:49:21

标签: angular api promise

我尝试使用promises将我的应用程序连接到Api。 更新方法工作正常,但更新方法确实无效。 这是:

  [{
    key: 'A',
    items: [{name: 'a item'}]
  },
  {
    key: 'B',
    items: [{name: 'b item'}, {name: 'another b item'}, {name: 'more b items'}, {name: 'even more b items'}]
  }]

在更新中它说: "提供的参数与呼叫目标的任何签名都不匹配"

为了进一步的帮助我给组件:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';

@Injectable()

export class Croissants {
    text: string;
    ownerId: number[];
    startDate: Date;
    endDate: Date;
}

export class Personnes {
    text: string;
    id: number;
    color: string;
}


export class EventService {

    constructor(private http: Http) {}

    getCroissants() {
        return this.http.get('http://localhost:8080/v0/croissants')
                    .toPromise()
                    .then(res => <any[]> res.json().data)
                    .then(data => { return data; });
    }

    updateCroissants(ownerId, startDate, endDate, text) {
        return this.http.put('http://localhost:8080/v0/croissant' + ownerId + startDate + endDate + text)
                    .toPromise()
                    .then(res => <any[]> res.json().data)
                    .then(data => { return data; });
    }

    deleteCroissants(ownerId) {
        return this.http.delete('http://localhost:8080/v0/croissant' + ownerId)
                    .toPromise()
                    .then(res => <any[]> res.json().data)
                    .then(data => { return data; });
    }

    getPersonnes() {
        return this.http.get('http://localhost:8080/v0/persons')
                    .toPromise()
                    .then(res => <any[]> res.json().data)
                    .then(data => { return data; });
    }

}

如果你想留意它,我的所有代码都可以在我的github上找到:

  

https://github.com/MehdyDriouech/Croissantboard

非常感谢你的帮助

1 个答案:

答案 0 :(得分:1)

updateCroissants方法需要从您调用它的地方获取id参数。

所以看起来应该是这样的:

//service
updateCroissants(id) {
        return this.http.put('http://localhost:8080/v0/croissants/' + id)
                    .toPromise()
                    .then(res => <any[]> res.json().data)
                    .then(data => { return data; });
}

当你调用这个函数时:

//component
this.service.updateCroissants("42").then((res)=> console.log(res));