2017-03-27 19 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

は、あなただけのチェックをかのように入れて1以上必要ですしている場合続く。他のすべては完璧です。

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

関連する問題