2016-12-29 13 views
1

これは、Web APIを呼び出すための私の方法、これを起動するラインである$ http.post <Boolean>。エラー指定されたパラメータは、コールターゲットのいずれかの署名と一致していないスロー:活字体コンパイラエラー指定されたパラメータは、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; 
    } 

これは私のウェブ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>; 

あなたがデータを投稿していない場合を取得を使用すべきである、またはあなたがしている場合、たとえば、なぜPOSTを必要とし、少なくとも

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

関連する問題