2017-03-27 3 views
1

여러 매개 변수와 함께 GET 요청을하고 싶지만 1 개만 필요합니다.각도 2 - 선택 헤더가 포함 된 GET 요청

현재는 내 요청 (나는 옵션 매개 변수 중 하나없이 전화를하고 싶은) 할이 코드가 :

서비스 :

public getAbsenceReservations(From: Date, ReservationStateID?: number, Resource?: string, To?: Date): Observable<models.AbsenceReservation> { 

    let params: URLSearchParams = new URLSearchParams(); 
    params.set("From", From.toString()); 
    params.set("ReservationStateID", ReservationStateID.toString()); 
    params.set("Resource", Resource); 
    params.set("To", To.toString()); 

    const path = `${this.apiEndpoint}Time/Absence`; 
    return this.http.get(path, { search: params }) 
     .map((response: Response) => new models.AbsenceReservation().deserialize(response.json().Data)) 
     .catch(this.handleError); 
} 

구성 요소 :

private getAbsenceReservations() { 
    this.loaderService.setEnableLoader(true); 
    this.AbsenceService.getAbsenceReservations(this.fromDate, this.reservationStateID, this.resource, this.toDate) 
     .subscribe(
     response => { 
      this.absenceReservations = response; 
      this.absenceReservationsChange.emit(this.absenceReservations); 
      this.loaderService.setEnableLoader(false); 
     }, 
     error => console.log("error") 
     ); 
} 

오류가 나타납니다. 또는

Cannot read property 'toString' of undefined 

물론 선택 매개 변수가 정의되지 않았기 때문에 오류의 원인이됩니다.

GET 요청을 선택적 매개 변수로 코딩하는 올바른 방법은 무엇입니까? 내가 0 옵션 정의 옵션 변수

api.com/?from=timestamp 

하지만 일이 있거나하면 더 많은 일을하는 경우

하면이

api.com/?from=timestamp&Resource=RandomString 

답변

2

당신은 체크 등의 경우 둘 필요가 다음과 같습니다. 다른 모든 것은 완벽합니다.

params.set("From", From.toString()); //Required 
if(ReservationStateID) params.set("ReservationStateID", ReservationStateID.toString()); 
if(Resource) params.set("Resource", Resource); 
if(To) params.set("To", To.toString()); 
+0

감사합니다. – Nicolas