2017-07-28 24 views
5

मैं कोणीय 4.3 के साथ आने वाले नए http क्लाइंट का उपयोग करने की कोशिश कर रहा हूं। मैंने दस्तावेज़ों की जांच की है और HttpParams कक्षा का उपयोग किया है लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है या मैं कुछ गलत कर रहा हूं।कोणीय में एचटीपी पैराम्स 4.3

delete(personId: string) { 
    const params = new HttpParams(); 
    params.set('personId', personId); 
    return this.http.delete(`${this.baseUrl}`, { 
     params 
    }); 
    } 

लेकिन जब अनुरोध करने वाले मेरे यूआरएल में कोई क्वेरी पैरामीटर किसी भी मदद

उत्तर

9

सराहना की जाएगी पैरामीटर अब अपरिवर्तनीय हैं ताकि आप जब आप उन्हें सेट करने के लिए कर रहे हैं: यहाँ मैं क्या है नए HttpParams शुरू करें ताकि प्रत्येक सेट() एक नया उदाहरण देता है और परिवर्तन लागू करता है। मैं अपने जवाब और बताएं कि आपने जरूरी स्थापित करने के लिए नहीं है अद्यतन करने के लिए चाहता था: https://angular.io/guide/http#headers


संपादित करें - प्रयास करें

const params = new HttpParams() 
    .set('personId', personId); 

यहाँ डॉक्स कि 4.3 के लिए हेडर और url पैरामीटर को कवर कर रहे हैं पैरामीटर जब आप HttpParams कक्षा शुरू करते हैं। उदाहरण के लिए आप पाश के लिए या HttpParams प्रारंभ के बाहर आप से

const params = new HttpParams() 
    .set('personId', personId); 

params = params.set('personName', personName); 

ऐसा कर सकते हैं डॉक्स द्वारा कहा गया है एक के भीतर पैरामीटर सेट करने की आवश्यकता है:

HttpHeaders वर्ग अपरिवर्तनीय है, इसलिए हर सेट() एक नया उदाहरण देता है और परिवर्तन लागू करता है।

+0

हाँ मैं अब देखता हूं, धन्यवाद! – ocespedes

1

HttpParams is immutable.

set() बनाता है और एक नया HttpParams उदाहरण देता है, उदाहरण के लिए जिस पर set() कहा जाता है परिवर्तनशील बिना।

तो कोड होना चाहिए

const params = new HttpParams().set('personId', personId); 

यहाँ एक बात मैं आगे जब इस नए HttpParams का उपयोग कर के साथ संघर्ष किया है, कभी कभी हम पैरामीटर के एन संख्या पारित करने के लिए है, उस समय यह उपयोगी है कुछ फ़ंक्शन जो पैरामीटर ऑब्जेक्ट को परिवर्तित करता है (जिसे हम कोणीय 4.3 से पहले उपयोग कर रहे थे) HttpParams में।

मैं toHttpParams अपने आमतौर पर इस्तेमाल किया सेवा में समारोह करने का सुझाव देते। तो आप ऑब्जेक्ट को HttpParams में बदलने के लिए फ़ंक्शन को कॉल कर सकते हैं।

/** 
* Convert Object to HttpParams 
* @param {Object} obj 
* @returns {HttpParams} 
*/ 
toHttpParams(obj: Object): HttpParams { 
    return Object.getOwnPropertyNames(obj) 
     .reduce((p, key) => p.set(key, obj[key]), new HttpParams()); 
} 

अद्यतन:

के बाद से 5.0.0-beta.6 (2017/09/03) वे नई सुविधा जोड़ी (accept object map for HttpClient headers & params)

आने वाले समय में वस्तु पारित किया जा सकता सीधे HttpParams के बजाय।

यह अन्य कारण है अगर आप toHttpParams ऊपर उल्लेख किया है की तरह एक आम समारोह का इस्तेमाल किया है, आप आसानी से इसे हटाने या अगर आवश्यक परिवर्तन कर सकते हैं।

संबंधित मुद्दे