2016-12-29 99 views
1

这是我调用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; 
    } 

我在做什么错?

回答

0

你打电话发布没有@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; 
     }); 
} 
+1

感谢您的意见。我更新了你的建议,它完美的工作。我不能投票,太新了。 – ayordy67

相关问题