2017-12-21 11 views
1

저는 Angular를 처음 접했고 "이전"Http API에서 새로운 HttpClient API로 업그레이드 중입니다.HttpParams를 각도에서 HttpHeaders와 비슷한 방법으로 설정하는 방법

그래서 나는 지금까지 잘 작동하는 새로운 HttpHeaders와 HttpParams를 사용해야합니다. 그러나 찾을 수있는 선언문의 예는 다소 이상하게 보입니다.

let searchParams = new HttpParams(); 
searchParams = searchParams.append('query', query); 
searchParams = searchParams.append('sort', sort); 
searchParams = searchParams.append('order', order); 

const headers = new HttpHeaders({ 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer ' + user['sessionToken'] 
}); 

HttpHeaders와 비슷한 방식으로 HttpParams를 선언 할 방법이 없습니까? 내가 사용한 방법은 그물에서 찾을 수있는 유일한 방법이었고 광범위한 시행 착오가 작용하는 유일한 방법처럼 보였습니다.

HttpParams를 설정하는 방법을 묻지 않고 HttpParams와 HttpHeaders를 동일한 방식 (HttpHeaders가 한 줄로 된 내 예제에서 설정된 방식)으로 설정할 수없는 이유가 궁금합니다.

+1

개발자가 왜 f 각도로 그렇게하기로 결정했을 때, 당신은 * 그들에게 물어보아야 할 것입니다. 그것은 SO에 대한 질문이 아닙니다. options 매개 변수에서'fromObject'를 사용할 수 있습니다 (https://github.com/angular/angular/blob/8a0e45826a4f140e9330d57594c338276a151401/packages/common/http/src/params.ts#L84 참조). 'const params = new HttpParams ({fromObject : {질의, 정렬, 순서}}))'. – jonrsharpe

답변

1

[email protected]에서이 같은 헤더와 같은 방법으로 매개 변수를 설정할 수 있습니다

let searchParams = new HttpParams({ 
    fromObject: { 
     query: query, 
     sort: sort, 
     order: order 
    } 
}); 

const modified = req.clone({params: searchParams}); 

또는 직접 요청에 setParams 방법을 사용할 수 있습니다 :

const modified = req.clone({setParams: {'query': query, 'sort': sort, 'order': order}}); 

당신이에 대해 궁금하다면 왜 HttpParamsHttpHeaders이 불변인지,이 대답을 확인하십시오. Why do most classes of the HttpClient API define immutable objects?

+0

도움을 주셔서 감사합니다, 이것은 좋아 보인다,하지만 계속> 형식의 인수 '{fromObject : [...]}' '{fromString ?: string; 인코더? : HttpParameterCodec; } '. <오류로. – Samarek

+0

@GeneDoe, 물론, 당신은 천만에요. Angular의 어떤 버전을 사용하고 있습니까? 'fromObject' 옵션은 v5 이상에서 사용할 수 있습니다. 'setParams' –

+1

아 설명과 함께 다른 하나를 시도해보십시오. 여전히 v5 이하입니다. 다시 한번 고마워. – Samarek