angular - Observable.of एक फ़ंक्शन नहीं है
rxjs (13)
अगर किसी को कोणीय 6 / rxjs 6 का उपयोग करते समय यह समस्या हो रही है, तो यहां दिए गए उत्तर देखें: RxJs 6 और कोणीय 6 में Observable.of का उपयोग नहीं किया जा सकता है
संक्षेप में, आपको इसे इस तरह से आयात करने की आवश्यकता है:
import { of } from 'rxjs';
और फिर कॉल करने के बजाय
Observable.of(res);
महज प्रयोग करें
of(res);
मैं अपनी परियोजना में
Observable.of
फ़ंक्शन आयात करने के साथ समस्या कर रहा हूं।
मेरी इंटेलीज सब कुछ देखती है।
मेरे कोड में:
import {Observable} from 'rxjs/Observable';
और मेरे कोड में मैं इसे इस तरह उपयोग करता हूं:
return Observable.of(res);
कोई विचार?
आप सभी ऑपरेटरों को इस तरह से आयात कर सकते हैं:
import {Observable} from 'rxjs/Rx';
कोणीय 5+ के लिए:
import { Observable } from 'rxjs/Observable';
कार्य करना चाहिए।
पर्यवेक्षक पैकेज को आयात से मेल खाना चाहिए और
import { Observer } from 'rxjs/Observer';
आयात करना चाहिए
import { Observer } from 'rxjs/Observer';
यदि आप पर्यवेक्षकों का उपयोग कर रहे हैं
import {<something>} from 'rxjs';
एक बड़ा आयात करता है इसलिए इससे बचना बेहतर है।
पैचिंग मेरे लिए काम नहीं कर रही थी, जो भी कारण हो, इसलिए मुझे इस पद्धति का सहारा लेना पड़ा:
import { of } from 'rxjs/observable/of'
// ...
return of(res)
मुझे आज यह समस्या थी। मैं निर्भरता को लोड करने के लिए systemjs का उपयोग कर रहा हूं।
मैं इस तरह Rxjs लोड कर रहा था:
...
paths: {
"rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js"
},
...
उपयोग पथ के बजाय इसका उपयोग करें:
var map = {
...
'rxjs': 'node_modules/rxjs',
...
}
var packages = {
...
'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' }
...
}
जिस तरह से सिस्टमज ने पुस्तकालय को मेरी समस्या तय की है, उसमें यह थोड़ा बदलाव।
मेरी मूर्खतापूर्ण गलती यह थी कि मैं अवलोकन योग्य होने पर जोड़ना
/add
भूल गया।
था:
import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
वास्तव में, जो फ़ाइल के ठीक ठीक
rxjs/observable/of
जो वास्तव में मौजूद है।
होना चाहिए:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
मैं Angular 5.2 और RxJS 5.5.6 का उपयोग कर रहा हूं
यह कोड काम नहीं किया:
import { Observable,of } from 'rxjs/Observable';
getHeroes(): Observable<Hero[]> {
return of(Hero[]) HEROES;
}
नीचे दिए गए कोड ने काम किया:
import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';
getHeroes(): Observable<Hero[]>
{
return Observable.create((observer: Subscriber<any>) => {
observer.next(HEROES);
observer.complete();
});
}
कॉलिंग विधि:
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
मुझे लगता है कि वे RxJS 5.5.2 में (/) कार्यक्षमता को स्थानांतरित / बदल सकते हैं
यदि आप Angular 6/7 का उपयोग कर रहे हैं
import { of } from 'rxjs';
और फिर कॉल करने के बजाय
Observable.of(res);
महज प्रयोग करें
of(res);
वास्तव में मैं आयात गड़बड़ है। RxJS के नवीनतम संस्करण में हम इसे इस तरह आयात कर सकते हैं:
import 'rxjs/add/observable/of';
हालांकि यह बिल्कुल अजीब लगता है, लेकिन मेरे साथ यह 'ओ' के आयात पथ में 'ओ' को कैपिटल करने के लिए मायने रखता है
import {Observable} from 'rxjs/Observable
।
यदि मैं
rxjs/observable
से
rxjs/observable
आयात करता हूं, तो
observable_1.Observable.of is not a function
साथ त्रुटि संदेश
observable_1.Observable.of is not a function
।
अजीब लेकिन मुझे उम्मीद है कि यह दूसरों की मदद करता है।
आरएक्सजेएस 6
RxJS
लाइब्रेरी के संस्करण 6 में अपग्रेड करते समय और निम्नलिखित कोड
rxjs-compat
पैकेज का उपयोग न करें
import 'rxjs/add/observable/of';
// ...
return Observable.of(res);
में बदलना होगा
import { of } from 'rxjs';
// ...
return of(res);
कोणीय 5 / Rxjs 5 से कोणीय 6 / Rxjs 6 में अपग्रेड किया गया?
आपको अपने आयात और अपनी तात्कालिकता को बदलना होगा। डेमियन की ब्लॉग पोस्ट देखें
Tl, डॉ:
import { Observable, fromEvent, of } from 'rxjs';
const yourResult = Observable
.create(of(yourObservable))
.startWith(null)
.map(x => x.someStringProperty.toLowerCase());
//subscribe to keyup event on input element
Observable
.create(fromEvent(yourInputElement, 'keyup'))
.debounceTime(5000)
.distinctUntilChanged()
.subscribe((event) => {
yourEventHandler(event);
});
import 'rxjs/add/observable/of';
rxjs -ोहैक्टर की आवश्यकता दर्शाता है
require("rxjs-compat/add/observable/of");
मेरे पास यह स्थापित नहीं था। द्वारा स्थापित किया गया
npm install rxjs-compat --save-dev
और पुनर्जन्म ने मेरा मुद्दा तय कर दिया।