Typescript编译器错误提供的参数不匹配API调用上的调用目标的任何签名
问题描述:
这是我调用Web API的方法,即启动此API的行。$ http.post <Boolean>
;引发错误提供的参数不匹配,通话对象的任何签名:Typescript编译器错误提供的参数不匹配API调用上的调用目标的任何签名
updateShowHold = (show: boolean): ng.IPromise<FilterDto> =>
{
var deferred = this.$q.defer();
this.$http.post<boolean>("/api/1.0/Bidding/Filter/Hold/Update/" + show).then(response =>
{
deferred.resolve(response.data);
}).catch(reason =>
{
deferred.reject(reason);
});
return deferred.promise;
}
这是我的Web API方法:
[Route("Hold/Update/{showHold}")]
[HttpPost]
public async Task<bool> UpdateHold(bool showHold)
{
var filter = await _filterService.Query().FirstOrDefaultAsync(f => f.CrewId == CrewId);
if(filter != null)
{
filter.ShowHold = showHold;
await _filterService.UpdateAsync(filter, filter.FilterId);
return true;
}
return false;
}
我在做什么错?
答
你打电话发布没有@data。对于后签名是
post<T>(url: string, data: any, config?: IRequestShortcutConfig): IHttpPromise<T>;
您应该使用得到,如果你不发布的数据,或者至少
this.$http.post<boolean>("/api/1.0/Bidding/Filter/Hold/Update/" + show,{})
我怀疑你的执行,例如为什么要求后,如果你是不发送数据和你的回应 - 这是怎么形成的?
这应该让你开始,我建议你清理一下你的代码,例如不需要使用延迟和不完整的输入。
updateShowHold = (show: boolean): ng.IPromise<any> => {
return this.$http.post("/api/1.0/Bidding/Filter/Hold/Update/" + show,{})
.then((response: any): any => {
return response.data;
});
}
感谢您的意见。我更新了你的建议,它完美的工作。我不能投票,太新了。 – ayordy67