2016-08-03 18 views
14

मेरे पास एक ऐसा फ़ंक्शन है जो ऑब्जेक्ट्स की सूची प्राप्त करता है और उसे एपीआई में पोस्ट करता है।कैंट स्ट्रिंग वैल्यू (कोणीय 2/टाइपस्क्रिप्ट) का निरीक्षण करने योग्य

फ़ंक्शन रिटर्न देता है क्योंकि कौन कभी कॉल करता है, यह एपीआई प्रतिक्रिया के आधार पर एक स्ट्रिंग वापस पाने की अपेक्षा करता है।

यदि प्रतिक्रिया अच्छी है तो मैं एक निश्चित स्ट्रिंग वापस करना चाहता हूं और यदि यह त्रुटि है तो मैं एक अलग स्ट्रिंग भेजना चाहता हूं।

public sendUpdate(updatedList: Cars[]): Observable<string> { 
return this._myService.updateListNewOrder(updatedList) 
    .map(response => "The POST worked successfully") 
    .catch(error => Observable.of("An Error occurred")); 
} 

तो अब मैं इस समारोह फोन और मेरे component.ts में स्ट्रिंग प्राप्त करना चाहते हैं:

यह मेरा समारोह है कि एक स्ट्रिंग रिटर्न है

messageToDisplay: string; 

    public updateList() { 
     this._myService.sendUpdate(this.listToUpdate).subscribe(
     res => this.messageToDisplay = res, // onNext 
     error => this.messageToDisplay = error // onError 
    ); 
    } 

लेकिन यह काम नहीं कर रहा ... मुझे त्रुटियां नहीं मिलती हैं। यह सिर्फ इतना है कि संदेश टोडडिस्प्ले अनिर्धारित रह रहा है।

क्या कोई समस्या देखता है?

धन्यवाद!

आप इसे की जरूरत है, इस updateListNewOrder (...) है:

public updateListNewOrder(newOrderedList: string[]): Observable<ServerResponse> { 
    let apiURL = "my/api/url"; 
    return this.http.post(apiURL, JSON.stringify(newOrderedList), { headers: this.defaultHeaders() } 
    ); 
    } 
+0

Observable.throw पर अपना Observable.of बदलने का प्रयास करें। Rxjs दस्तावेज़ों से: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/throw.md – ajliptak

उत्तर

7

मैं अपने खुद के कार्यों के साथ यहां अपने तर्क बनाए गए और सब कुछ ठीक काम किया। आपकी sendUpdate विधि सही और साथ ही subscribe फ़ंक्शन भी प्रतीत होती है। तो, आरएक्सजेएस तर्क मेरे लिए ठीक है। समस्या कोड की दूसरी शांति में हो सकती है जो खुलासा नहीं है।

मुझे पता चला कि एकमात्र मुद्दा updateListNewOrder का प्रकार था। यदि आप @angular/http मॉड्यूल का उपयोग कर रहे हैं तो Observable<ServerResponse> के बजाय यह Observable<Response> होना चाहिए।

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