1

私はクエリ文字列を何もしなければいくつかの属性がnullになる可能性があるcriteriaオブジェクトを持っています.WebApiではnullの代わりに"null" だから、角度クライアントでこれを与えHttpParamsでヌルパラメータを削除する

 return this._http 
      .get<ExposureDifference[]>(AppSettings.ExposureRunDataQueryString, {params : <any>criteria, withCredentials: true}) 
      .catch<any, ExposureDifference[]>(this._trace.handleError("GET " + AppSettings.ExposureRunDataQueryString + criteria, [])) 
      .finally(() => this.isLoading = false); 

http://localhost:63037/api/exposureRuns/data/?id=3&secsymb=undefined&fund=EL&esectype=SWAP_CDS 

がQUERから未定義のパラメータを除外する方法はありますように私は、クエリ文字列を得ることができますy文字列ですか?

答えて

0

彼らは(キーが全くのオブジェクトにないとは異なります)undefinedの値がある場合には、JavaScriptのdelete (MDN)キーワードを使用して、それらをクライアント側にフィルタを適用する必要があります

if (queryObject.secsymb === undefined) { 
    delete queryObject.secsymb; 
} 

をして、デフォルトのメソッドを使用しますお使いのコントローラメソッドのパラメータは:あなたは、クエリ文字列パラメータが含まれていないことを確認した場合

GetExposureRunsData(int id, string fund, SecType sectype, string secsymb = null) 

、あなたのパラメータはnull

0123にデフォルト設定されます
+0

こんにちは@Alex M未定義の属性は削除されませんでした。typescriptは未定義ではなくnullに設定され、WebApiは「null」となって問題が解決されました。 – Anand

0

あなたはこれを試すことができます。

this.httpClient.get('../api/path', { 
 
    params: Object.entries(queryParameterObject).reduce((queryParams, [key, value]) => queryParams.set(key, value), new HttpParams()); 
 
});

それは私のために働きました。

+0

paramsを '' null ''として上記のコードは私のためには機能しません。 – Anand

+0

これを呼び出す前に、パラメータを文字列に変換しているようです。文字列に変換する必要がある場合は、代わりに 'queryParams.set(key、value)'でそれを行い、正しいパラメータ値を入力として渡すことができます。 –

関連する問題