1

일부 속성이 null 일 수있는 기준 오브젝트가 있습니다. 쿼리 문자열을 포함하지 않으면 &p=undefined과 같은 것이 포함됩니다. WebApi에서 바람직하지 않습니다. null 대신 "null"이 올 수 있습니다. 그래서 각 클라이언트이 주어HttpParams에서 null 매개 변수를 제거하십시오.

 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 

는 네가 윌리엄 이니에서 정의되지 않은 매개 변수를 제외 할 수있는 방법이 있나요 나는 쿼리 문자열을 얻을 수 y 문자열?

답변

0

가 (키에서 모든 객체에없는 것보다 다른) undefined의 값이있는 경우 자바 스크립트의 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가 undefined 대신 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를 위의 코드 -이 솔루션은 나를 위해 작동하지 않습니다. – Anand

+0

매개 변수를 호출하기 전에 매개 변수를 문자열로 변환하는 것처럼 보입니다. 그것들을 문자열로 변환해야한다면, 대신'queryParams.set (key, value)'에서 그렇게 할 수 있고, 매개 변수의 정확한 값을 입력으로 전달할 수 있습니다. –

관련 문제