পর্যবেক্ষণযোগ্য.ওফ কোনও ফাংশন নয়


191

Observable.ofআমার প্রকল্পে আমদানি করে ফাংশন নিয়ে আমার সমস্যা হচ্ছে । আমার ইন্টেলিজ সব দেখেন। আমার কোডে আমার রয়েছে:

import {Observable} from 'rxjs/Observable';

এবং আমার কোডে আমি এটি এর মতো ব্যবহার করি:

return Observable.of(res);

কোন ধারনা?


5
আপনি যদি সঠিক আমদানি এবং ব্যবহারের উপর import { of } from 'rxjs'; return of(res); rxjs6 ব্যবহার করেন github.com/ReactiveX/rxjs/blob/master/MIGRATION.md#import-paths & github.com/ReactiveX/rxjs/blob/master/…
ফিদেব

উত্তর:


232

আসলে আমি আমদানি গোলযোগ করেছি। আরএক্সজেএস এর সর্বশেষ সংস্করণে আমরা এটি এর মতো আমদানি করতে পারি:

import 'rxjs/add/observable/of';

21
আমার 192 তম দ্বিগুণ-গ্রহণের পরে, আমি লক্ষ্য করেছি যে আমার কোডে আমি operator/- rxjs/add/operator/of- পরিবর্তে আমদানি করছি observable/। ডি ওহ।
এরিকরবার্টব্রেভার

আমি দেখেছি কোন এক কৌনিক প্রকল্পে আমার এই বিবৃতিটি ব্যবহার করার দরকার নেই। তবে অন্যটিতে আমাকে এটি আমদানি করতে হবে। আমি পার্থক্য বুঝতে পারি না। কারণগুলি কি জানেন?
নিওমিংজিয়ান

1
কৌণিক সংস্করণ, সম্ভবত ?! 4.3.2 এর জন্য আমাকে এটি করতে হবে না তবে আমি 5.0.0 এর জন্য করেছি।
ড্রাগন

@ ড্রাগন: আমার সাথেও ঠিক একই রকম। আমাকে এটি ৪.৪ এর জন্য করতে হবে না, আমি এখন 5.2 এর জন্য করছি। আরও অদ্ভুত, আমাকে কেবল এটি একটি ফাইলে অন্তর্ভুক্ত করতে হবে এবং অন্য সমস্ত .ts-ফাইল কেবল এটিকে বেছে নেবে এবং যেতে ভাল।
জেপি দশ বার্গে

2
যদি আমি "rxjs / add / observable / of" মডিউলটি খুঁজে না পাই তবে কী হবে?
এনরিকো

167

কৌণিক 6 / rxjs 6 ব্যবহার করার সময় যদি কারও সমস্যা হয় তবে উত্তরগুলি এখানে দেখুন: আরএক্সজেএস 6 এবং কৌণিক 6 এ অবজারভেবল.ফ ব্যবহার করতে পারেনি

সংক্ষেপে, আপনাকে এটি এ জাতীয়ভাবে আমদানি করতে হবে:

import { of } from 'rxjs';

এবং তারপরে কল করার পরিবর্তে

Observable.of(res);

শুধু ব্যবহার

of(res);

2
ধন্যবাদ! এপিআইয়ের অস্থিরতার কারণে আরএক্সটিতে আমদানি নির্ধারণ করা সর্বদা আমার জন্য হতাশার এত বড় উত্স।
ডোমেনিকডিটি

43

যদিও এটি একেবারেই অদ্ভুত মনে হয়, আমার সাথে এটি 'ও' এর আমদানির পথে মূলধন করতে গুরুত্বপূর্ণ import {Observable} from 'rxjs/Observableobservable_1.Observable.of is not a functionআমি যদি পর্যবেক্ষণযোগ্য থেকে আমদানি করি তবে ত্রুটির বার্তা উপস্থিত থাকে rxjs/observable। অদ্ভুত তবে আমি আশা করি এটি অন্যকে সহায়তা করে।


40

আপনি যদি কৌণিক 6/7 ব্যবহার করে থাকেন

import { of } from 'rxjs';

এবং তারপরে কল করার পরিবর্তে

Observable.of(res);

শুধু ব্যবহার

of(res);

এর কারণ 5 থেকে 6 টি আরএক্সজেএস সংস্করণে পরিবর্তিত হয়েছিল যা অনেক ব্রেকিং পরিবর্তনের সূচনা করেছিল। আপনার কৌণিক প্রকল্পটি কীভাবে স্থানান্তর করতে হয় তা আপনি এখানে পরীক্ষা করতে পারেন: rxjs.dev/guide/v6/migration
এড্রিক

29

আমার নির্বোধের ভুলটি ছিল যে /addপর্যবেক্ষণযোগ্যদের প্রয়োজনের সময় আমি যুক্ত করতে ভুলে গিয়েছিলাম ।

ছিল:

import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';

যা দৃশ্যত ঠিক আছে rxjs/observable/of, কারণ ফাইল উপস্থিত রয়েছে exists

হতে হবে:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

@ শাঁন_গ্র্যাডি যেমন উল্লেখ করেছেন, কোনওভাবে এটি কাজ করে না। আমি তার প্রস্তাবটি দিয়ে যাই
Sonne

20

প্যাচিং আমার পক্ষে কাজ করছিল না, যে কারণেই হোক, তাই আমাকে এই পদ্ধতিটি অবলম্বন করতে হয়েছিল:

import { of } from 'rxjs/observable/of'

// ...

return of(res)

এটি কোনও কাজ নয়, এটি কৌণিক> = 6.0.0 এর বাক্য গঠন। 'rxjs' থেকে import এর import আমদানি করা আমার পক্ষে ভাল ছিল। দেখুন stackoverflow.com/questions/38067580/...
mark_h

18

শুধু যোগ করতে,

আপনি যদি তাদের মধ্যে অনেকগুলি ব্যবহার করে থাকেন তবে আপনি সমস্ত ব্যবহার করে আমদানি করতে পারেন

import 'rxjs/Rx'; 

@ থিরি টেম্প্লেয়ার দ্বারা উল্লিখিত হিসাবে তবে আমি মনে করি আপনি যদি সীমাবদ্ধ অপারেটর ব্যবহার করছেন তবে আপনার নিজের মতো পৃথক অপারেটরটি আমদানি করা উচিত

import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';

@ ইউকস্ দ্বারা উল্লিখিত হিসাবে

কারণ 'আরএক্সজেএস / আরএক্স' সমস্ত আরএক্স উপাদান আমদানি করবে যা অবশ্যই পারফরম্যান্সের জন্য ব্যয় করে।

তুলনা


1
আমি দেখেছি কোন এক কৌনিক প্রকল্পে আমার এই বিবৃতিটি ব্যবহার করার দরকার নেই। তবে অন্যটিতে আমাকে এটি আমদানি করতে হবে। আমি পার্থক্য বুঝতে পারি না। কারণগুলি কি জানেন?
নিওমিংজিয়ান

16

আপনি এইভাবে সমস্ত অপারেটর আমদানি করতে পারেন:

import {Observable} from 'rxjs/Rx';

7
আমি এই উপায়ে আমদানি করার পরামর্শ দেব না, কারণ এটি বেশ বড় লাইব্রেরি এবং "এর" এটির একটি খুব ছোট অংশ।
methgaard

2
@methgaard import { Observable } from 'rxjs/Observable' import 'rxjs/add/observable/of';কাজ করে না। শুধু import {Observable} from 'rxjs/Rx';কাজ করে। সংস্করণটি 5.4.2
নিওমিংজিয়ান

@methgaard আমি দুঃখিত আমি একটি ভুল করেছিলাম. ঘটনাটি আমি পেয়েছি Observable_1.Observable.of(...).delay(...).timeout is not a function। আমি ব্যবহার করি নিimport 'rxjs/add/operator/timeout'
niaomingjian

এটি বান্ডিলের আকারও বাড়ায়
আমিরহোসেইন মেহরভারজি

5

আমি কৌনিক 5.2 এবং আরএক্সজেএস 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 এ () কার্যকারিতাটি স্থানান্তরিত / পরিবর্তিত হতে পারে


4

এটি ঠিকভাবে চেষ্টা করা উচিত এটি চেষ্টা করে।

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';

4
// "rxjs": "^5.5.10"
import { of } from 'rxjs/observable/of';

.... 
return of(res)

এটি একটি কোড-উত্তর মাত্র। আপনি দয়া করে কী প্রস্তাব দেওয়ার চেষ্টা করছেন তা দয়া করে ব্যাখ্যা করতে পারেন?
পিটার উইপ্পারম্যান

1
হাই, এখানে আমাদের কেবল অপারেটরটি আমদানি করা উচিত যা পারফরম্যান্স সমস্যার কারণে পুরো "পর্যবেক্ষণযোগ্য" নয়। নতুন সংস্করণে (^ 5.5.10) "অপারেটর" এর "আমদানির সঠিক উপায় হ'ল: 'rxjs / পর্যবেক্ষণযোগ্য / এর' থেকে import এর import আমদানি করুন ... এটি আমার ক্ষেত্রে কাজ করে। আমি আমার রেজোলিউশন সম্পাদনা করব। ধন্যবাদ পিটার
লেটাথ্যাং

4

কৌণিক 5 / আরএক্সজেএস 5 থেকে কৌনিক 6 / আরএক্সজেএস 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);
    });

1
.0.০ ব্যবহার করে, অবজারভেবল.ক্রিয়েট ((ভাল) এর) সাবস্ক্রাইব করার চেষ্টা করার ফলে "এটি._শাস্ক্রাইব কোনও ফাংশন নয়" in পরিবর্তে, আমি সফলভাবে "অফ (ভাল)" কল করে একটি পর্যবেক্ষণযোগ্য তৈরি করেছি।
জিম নরম্যান

3

আরএক্সজেএস 6

RxJSগ্রন্থাগারের 6 সংস্করণে আপগ্রেড করার সময় এবং rxjs-compatনীচের কোডটি প্যাকেজটি ব্যবহার না করে

import 'rxjs/add/observable/of';   
  // ...
  return Observable.of(res);

মধ্যে পরিবর্তন করতে হবে

import { of } from 'rxjs';
  // ...
  return of(res);

3

আমার জন্য (কৌণিক 5 এবং আরএক্সজেএস 5) স্ব-পরিপূর্ণ আমদানির পরামর্শ দেওয়া হয়েছে:

import { Observable } from '../../../../../node_modules/rxjs/Observable';

যখন সব স্ট্যাটিক অপারেটরদের সঙ্গে (হওয়া উচিত from, of, ect, কাজ জরিমানা:

import { Observable } from 'rxjs/Observable';

2

আমার আজ এই সমস্যা ছিল। নির্ভরতা লোড করতে আমি সিস্টেমজ ব্যবহার করছি।

আমি এইভাবে আরএক্সজেড লোড করছিলাম:

...
    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' }
...
}

সিস্টেমজগুলি লাইব্রেরিটির বোঝার পথে এই সামান্য পরিবর্তনটি আমার সমস্যার সমাধান করে।



2

কৌণিক 5+ এর জন্য:

import { Observable } from 'rxjs/Observable';কাজ করা উচিত. import { Observer } from 'rxjs/Observer';যদি আপনি যে পর্যবেক্ষক ব্যবহার করেন তবে পর্যবেক্ষক প্যাকেজটিও আমদানির সাথে মেলাতে হবে

import {<something>} from 'rxjs'; একটি বিশাল আমদানি করে তাই এটি এড়ানো ভাল।


1
import 'rxjs/add/observable/of';

rxjs-compat এর প্রয়োজনীয়তা দেখায়

require("rxjs-compat/add/observable/of");

আমার এটি ইনস্টল করা হয়নি। দ্বারা ইনস্টল করা

npm install rxjs-compat --save-dev

এবং পুনরায় পরিচালনা আমার সমস্যাটি স্থির করে।



0

একরকম এমনকি ওয়েবস্টর্ম এটিকে এমন করে তোলে import {of} from 'rxjs/observable/of'; এবং সমস্ত কিছু কাজ শুরু করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.