2016-12-29 27 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

相關問題