2016-03-09 13 views
6

मैं वर्तमान में Angular2 और प्रत्यक्ष वस्तु के साथ एक समस्या है। एक असली एक एपीआई और एक नकली एक से जुड़ा हुआ:नमूदार fromArray

मैं एक घटक है जो एक सेवा कॉल की है।

सेवा एपीआई से जुड़ा हुआ अच्छी तरह से काम करता है लेकिन जब मैं नकली एक का उपयोग करें, मैं प्रत्यक्ष वस्तु से किसी सरणी वापस जाने के लिए चाहते हैं, लेकिन मैं इस त्रुटि है:

"Observable_1.Observable.fromArray कार्य नहीं है"

घटक::

this._raceService.list().subscribe(newRaces => { 

    this.races = newRaces; 
}); 

रियल सेवा:

list(){ return this._http.get('http://dev.backend.com/api.php', options).map(res => res.json()); } 
यहाँ मेरी कोड है

नकली सेवा:

list() { return Observable.fromArray([{ name: 'London' }]); } 

आप मेरी मदद कर सकते plz?

चीयर्स

उत्तर

18

कि होना चाहिए ...

Rx.Observable.from(yourarray) 

fromArray

+1

धन्यवाद लेकिन जब मैं प्रत्यक्ष का उपयोग करें।मेरे पास संकलन में यह है: त्रुटि टीएस 2346: आपूर्ति पैरामीटर कॉल लक्ष्य के किसी भी हस्ताक्षर से मेल नहीं खाते हैं। और Rx.Observable का उपयोग कैसे करें जब आरएक्स के पास कोई निर्यात सदस्य नहीं है? – intuix

+0

यह है कि सूची विधि हस्ताक्षर से संबंधित एक प्रकार की त्रुटि है? क्या आपको शायद सूची की आवश्यकता है(): कोई भी {... –

+0

यह नहीं मिला कि कौन सी सूची() करना है? सूची या तो एक अवलोकन योग्य संपत्ति नहीं है .. मुझे एक अवलोकन वस्तु से एक विधि की आवश्यकता है जो पैरामीटर में एक सरणी लेता है .. और अंततः "सब्सक्राइब करने योग्य" होना चाहिए क्योंकि मेरे घटक कॉल परिणाम पर सब्सक्राइब करते हैं। – intuix

3

बहिष्कार कर दिया करने के लिए मैं एक ही समस्या थी और मेरे घटक में यह आयात बयान को जोड़ने के लिए किया था लगता है:

import 'rxjs/add/observable/fromArray';

मैंने पाया आयात Rx.js फ़ाइल मैं संदर्भित किया गया था (के बाद से वहाँ अपनी परियोजना में फ़ाइल के विभिन्न संस्करणों हो सकता है सावधान रहना) में fromArray की खोज करके जोड़ने के लिए:

System.register("rxjs/add/observable/fromArray", ["rxjs/Observable", "rxjs/observable/ArrayObservable"], true, function(require, exports, module) { 
    // ... 
}); 
3

मैं एक ही समस्या थी, मेरे कोड में कुछ शोध के बाद ...

मैं आयातित:

import {Observable} from "rxjs/Observable"; 

बजाय:

import {Observable} from "rxjs/Rx"; 

आशा है कि यह किसी और कर सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। मेरे मामले में इस फॉर्म ने अच्छा काम किया: "आरएक्सजेएस" से आयात {पर्यवेक्षण}; ' – lukeatdesignworks

3

मैं एक ही मुद्दा था। मेरा मानना ​​है कि आप इस मिल रहे हों, क्योंकि fromArray मान्य नहीं है।

आयात rxjs/rxjs के अन्य भागों का आयात रोकने के लिए प्रत्यक्ष आप

import { Observable } from 'rxjs/Observable'; 

fromArray पदावनत किया गया है की जरूरत नहीं है। इसके बजाय, का उपयोग

list() { return Observable.from([{ name: 'London' }]); } 
+0

आमतौर पर कोड पोस्ट करने के बारे में बात करते हुए आपके पोस्ट में स्पष्टीकरण जोड़ना एक अच्छा विचार है। यह नए डेवलपर्स को यह समझने की अनुमति देता है कि कोड क्या करता है। –

+1

@CalebKleveter - इसे इंगित करने के लिए धन्यवाद। मेरे पास जवाब के लिए टिप्पणियां थीं, लेकिन वे पाठक के लिए स्पष्ट नहीं थे क्योंकि वे कोड के ब्लॉक के साथ कोड टिप्पणियां थीं। मैंने टिप्पणियों को खींचने के लिए उत्तर अपडेट किया है। – swoodruff

+0

आयात 'rxjs/add/observable/से'; – Zoidy

6

Observable.fromArray() RxJS संस्करण 5 में हटा दिया गया था का उपयोग from()

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/from'; 
... 
Observable.from([1, 2, 3, 4]); 
संबंधित मुद्दे