'পর্যবেক্ষণযোগ্য <প্রতিক্রিয়া>' টাইপ করে সম্পত্তি 'মানচিত্র' বিদ্যমান নেই


199

আমি কৌনিক থেকে একটি এপিআই কল করার চেষ্টা করছি কিন্তু এই ত্রুটিটি পাচ্ছি:

Property 'map' does not exist on type 'Observable<Response>'

এই অনুরূপ প্রশ্নের উত্তরগুলি আমার সমস্যার সমাধান করতে পারেনি: কৌণিক 2 বিটা.17: 'পর্যবেক্ষণযোগ্য <রেসপন্স>' টাইপ করে সম্পত্তি 'মানচিত্র' উপস্থিত নেই

আমি কৌনিক 2.0.0-beta.17 ব্যবহার করছি।

উত্তর:


371

আপনাকে mapঅপারেটরটি আমদানি করতে হবে :

import 'rxjs/add/operator/map'

বা আরও সাধারণভাবে:

import 'rxjs/Rx';

বিজ্ঞপ্তি: আরএক্সজেএস 6.x.xএবং তারপরের সংস্করণগুলির জন্য , আপনাকে নীচের কোড স্নিপেটে দেখানো হিসাবে পাইপযোগ্য অপারেটরগুলি ব্যবহার করতে হবে:

import { map } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';

// ...
export class MyComponent {
  constructor(private http: HttpClient) { }
  getItems() {
    this.http.get('https://example.com/api/items').pipe(map(data => {})).subscribe(result => {
      console.log(result);
    });
  }
}

আরএক্সজেএস টিম ব্যবহারের জন্য সমর্থন সরিয়ে দেওয়ার কারণে এটি ঘটে আরও তথ্যের জন্য আরএক্সজেএস'র চেঞ্জলগে ব্রেকিং পরিবর্তনগুলি দেখুন।

চেঞ্জলগ থেকে:

অপারেটার : Pipeable অপারেটার এখন rxjs থেকে আমদানি করতে হবে যাতে পছন্দ: import { map, filter, switchMap } from 'rxjs/operators';। কোনও গভীর আমদানি নেই।


বৃদ্ধিতে অবৈধ মডিউল নাম, মডিউল '../../ অবজারভেবল' খুঁজে পাওয়া যায় না। 'পর্যবেক্ষণযোগ্য <প্রতিক্রিয়া>' টাইপ করে সম্পত্তি 'মানচিত্র' বিদ্যমান নেই।
মালিক কাশ্মীরি

আপনি Observableক্লাসটি কীভাবে আমদানি করবেন ? এই মত: import {Observable} from 'rxjs/Observable';বা import {Observable} from 'rxjs/Rx';?
থিয়েরি টেম্পিলার

আমি এখন পর্যন্ত এই শ্রেণিটি আমদানি করছি না
মালিক কাশ্মীরি

1
আমি কৌনিক 2 আরসি 1 এবং rxjs 5.0.0-beta2 ব্যবহার করছি। আমি 'আরএক্সজেএস / পর্যবেক্ষণযোগ্য' থেকে পর্যবেক্ষণযোগ্য আমদানি হিসাবে 'পর্যবেক্ষণযোগ্য' হিসাবে আমদানি করেছি; এবং আমদানি করা 'আরএক্সজেএস / অ্যাড / অপারেটর / মানচিত্র' এর মতো আমদানি করা মানচিত্র অপারেটর; আমি যখন বিটা was ব্যবহার করছিলাম তখন এটি কাজ করছিল I
দর্শন পুরাণিক

4
প্রথমে আপনার প্রকল্পের বনাম কোড টার্মিনালে এই কমান্ডটি লিখুন এবং প্রকল্পটি পুনরায় চালু করুন। অপারেটর npm install rxjs-compatআমদানির চেয়ে map
করণ রায়াইনি

162

এটি পুনর্বিবেচনা করছে কারণ আমার সমাধান এখানে তালিকাভুক্ত নয়।

আমি rxjs 6.0 এর সাথে কৌণিক 6 চালাচ্ছি এবং এই ত্রুটিতে চলেছি।

এটি ঠিক করার জন্য আমি এখানে যা করেছি:

আমি বদলে গেছি

map((response: any) => response.json())

সহজভাবে হতে:

.pipe(map((response: any) => response.json()));

আমি এখানে সমাধান খুঁজে পেয়েছি:

https://github.com/angular/angular/issues/15548#issuecomment-387009186


1
আমি নিশ্চিত নই যে মাইগ্রেশন সরঞ্জামটি rxjs-5-to-6-migration এটিকে বাছাই করে না কেন? এটি আকর্ষণীয় যে এটি ডু / ট্যাপের পুনরায় ম্যাপিংয়ের দিকে লক্ষ্য করে না যা আমার পরিবেশে আমদানি সরঞ্জামটি স্বীকৃতি সত্ত্বেও এখনও সমাধান হয়নি। কৌণিক বিকাশে আমার 'অপ্রত্যাশিত নষ্ট সময়' এর 90% আরএক্সজেএস ডকুমেন্ট এবং কোডের সীমানা সংক্রান্ত সমস্যাগুলির সাথে ব্যয় করা হয়, এটি সত্যিই হতাশাব্যঞ্জক।
জো

1
ধন্যবাদ! তুমি একজন জীবন রক্ষাকারী!! যার আগ্রহী, এই পরিবর্তনের পুরো রেফারেন্সটি এখানে পাওয়া যাবে: github.com/ReactiveX/rxjs/blob/master/…
মালবাদাও

21
এটি আমার জন্য কাজ করেছিল, আমারও যুক্ত করতে হবেimport { map } from 'rxjs/operators';
পল

মজার বিষয়, আমরা এটি ঠিক কৌণিক 6 আপগ্রেডে ঠিক করেছিলাম - যা সর্বশেষতম rxjs এনেছে।
সর্বোচ্চ

2
@ পল ধন্যবাদ সম্পর্কিত .catch, আমরা catchErrorমত ব্যবহার করতে পারেন .pipe(catchError(this.handleError))?
করুনউইটস্লামনিউ

60

আপনার প্রকল্পের বনাম কোড টার্মিনালে এই কমান্ডটি লিখুন এবং প্রকল্পটি পুনরায় চালু করুন।

npm install rxjs-compat

এটি mapলিখে আপনার অপারেটরটি আমদানি করতে হবে :

import 'rxjs/add/operator/map';

1
যদি এটি সমস্ত ফাইল বন্ধ করে কাজ করে না এবং বনাম স্টুডিওগুলি পুনরায় চালু করে।
অজয় তাকুর

1
এটি আমার জন্য কাজ করেছে, ভাগ করে নেওয়ার জন্য ধন্যবাদ।
থিমোয়ান্প্পপ্রগ্রামগ্রাম

30

কৌণিক 7v এর জন্য

পরিবর্তন

import 'rxjs/add/operator/map';

প্রতি

import { map } from "rxjs/operators"; 

এবং

 return this.http.get('http://localhost/ionicapis/public/api/products')
 .pipe(map(res => res.json()));

পাইপের সাহায্যে সঠিক সিনট্যাক্সটি দেখে এটি আমাকে কাতানা 24 কে সহায়তা করেছে।
পাঙ্কোলজিস্ট

25

অ্যাংুলার ২.০.১ নিয়ে আমার একই সমস্যা ছিল কারণ আমি পর্যবেক্ষণযোগ্য আমদানি করছিলাম

import { Observable } from 'rxjs/Observable';

পরিবর্তে এই পথ থেকে পর্যবেক্ষণযোগ্য আমদানি করার ক্ষেত্রে আমি আমার সমস্যার সমাধান করি

import { Observable } from 'rxjs';

এই অনুশীলনটিকে বান্ডিল-আকার-বান্ধব হিসাবে বিবেচনা করা হয় না কারণ বিবৃতিটি সমস্ত অপারেটরগুলি Observable(আপনি ব্যবহার করেন না এমনগুলি সহ) বান্ডেলে আমদানি করে। পরিবর্তে, আপনার প্রতিটি অপারেটর পৃথকভাবে আমদানি করা উচিত। আমি "লেটেটেবল অপারেটরগুলি" ব্যবহার করার পরামর্শ দিচ্ছি, যা আরও ভাল গাছ কাঁপানো সমর্থন করার জন্য আরএক্সজেএস ভি 5.5-এ চালু হয়েছিল।
সরুন অন্তরালওয়ান ২

15

আরএক্সজেএসে map মানচিত্রের অপারেটরের ব্যবহার পরিবর্তন করা হয়েছে এখন আপনার এটি এটি ব্যবহার করা দরকার।

import { map } from 'rxjs/operators';
myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);

রেফারেন্সের জন্য https://www.academind.com/learn/javascript/rxjs-6- কি- পরিবর্তিত/# operators-update- path


এই জবাবটি নোট করুন কারণ যে কেউ করছেন RxJS v6তার প্রয়োজন হবে .pipe()বা অপারেটরগুলির মধ্যে কেউই পর্যবেক্ষণযোগ্য থেকে সরাসরি কাজ করবে না। আপনি যেমন একটি ত্রুটি দেখতে পাবেন,Property 'share' does not exist on type 'Observable<{}>'
এটকনওয়ে

8

টার্মিনালে টাইপ করে কেবল rxjs-compat ইনস্টল করুন:

npm install --save rxjs-compat

তারপরে আমদানি করুন:

import 'rxjs/Rx';

7

সর্বশেষতম কৌণিক।। *। * এ আপনি সহজভাবে এটি ব্যবহার করতে পারেন:

import { Observable, of } from "rxjs";
import { map, catchError } from "rxjs/operators";

এবং তারপরে আপনি এগুলি methodsনিম্নরূপ ব্যবহার করতে পারেন :

   private getHtml(): Observable<any> {
    return this.http.get("../../assets/test-data/preview.html").pipe(
      map((res: any) => res.json()),
      catchError(<T>(error: any, result?: T) => {
        console.log(error);
        return of(result as T);
      })
    );
  }

আরও তথ্যের জন্য এই ডেমোটি দেখুন।


5

আমার ক্ষেত্রে কেবল মানচিত্র এবং প্রতিশ্রুতি অন্তর্ভুক্ত করা যথেষ্ট নয়:

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

অফিসিয়াল ডকুমেন্টেশন হিসাবে বেশ কয়েকটি rxjs উপাদান আমদানি করে আমি এই সমস্যার সমাধান করেছি পরামর্শ :

1) একটি অ্যাপ্লিকেশন / rxjs- অপারেটর.সেট ফাইলগুলিতে বিবৃতি আমদানি করুন:

// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable

// See node_module/rxjs/Rxjs.js
// Import just the rxjs statics and operators we need for THIS app.

// Statics
import 'rxjs/add/observable/throw';

// Operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';

2) rxjs- অপারেটর নিজেই আপনার পরিষেবাতে আমদানি করুন:

// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';

আমি প্রতিটি পরিষেবায় rxjs-অপারেটরদের অন্তর্ভুক্ত করা ঠিক না বলে মনে করি। এটি কেবল অ্যাপ.মডিউল.টসে অন্তর্ভুক্ত করা উচিত তবে দুর্ভাগ্যক্রমে এনজি টেস্ট ত্রুটি ছুঁড়েছে যদি নির্দিষ্ট জায়গায় অপারেটরগুলি আমদানি করা হয় না
মোহন রাম

5
import { map } from "rxjs/operators";

getGetFunction(){
this.http.get('http://someapi')
.pipe(map(res => res));
}

getPostFunction(yourPara){
this.http.get('http://someapi',yourPara)
.pipe(map(res => res));
}

উপরের ফাংশনে আপনি দেখতে পাচ্ছেন যে আমি এইচটিপিপ্লিয়েন্ট ব্যবহার করার পরে থেকে রেস.জসন () ব্যবহার করি নি। এটি স্বয়ংক্রিয়ভাবে রেস.জসন () প্রয়োগ করে এবং পর্যবেক্ষণযোগ্য (এইচটিপিআরস্পোন <স্ট্রিং>) প্রদান করে। এইচটিটিপিপ্লায়েন্টে কৌনিক 4 এর পরে আপনাকে আর এই ফাংশনটি কল করার দরকার নেই।


3

আমার একই সমস্যা ছিল, আমি ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করছিলাম যার টাইপ স্ক্রিপ্টটির পুরানো সংস্করণ ছিল।

এক্সটেনশানটি আপগ্রেড করার পরে সমস্যাটি সমাধান হয়ে গেছে।

লিংক ডাউনলোড কর


3

আমি কৌণিক 5.2 ব্যবহার করছি এবং আমি যখন import 'rxjs/Rx';এটি ব্যবহার করি তখন আমাকে নীচের লিঙ্ক ত্রুটি ছুড়ে দেয়: টিএসলিন্ট: এই আমদানিটি কালো তালিকাভুক্ত করা হয়েছে, পরিবর্তে একটি সাবমডিউল আমদানি করুন (আমদানি-কালো তালিকাভুক্ত)

স্ক্রিনশটটি নীচে দেখুন: আরএক্সজেএস / আরএক্সের আমদানি কৌণিক 5.2-এ কালো তালিকাভুক্ত

সমাধান: আমার প্রয়োজনীয় অপারেটরগুলি আমদানি করে এটি সমাধান করেছে । উদাহরণ অনুসরণ করে:

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

সুতরাং ফিক্সটি কেবলমাত্র প্রয়োজনীয় অপারেটরগুলিই আমদানি করতে হবে।


@ অ্যান্ড্রুবেনজামিন আমি আপনাকে অত্যন্ত পরামর্শ দিচ্ছি যে আপনি এটি করেন। এটি আপনার গলিতে অনেক ঝামেলা বাঁচাবে।
ডেভনার

3

সমস্যাটি সমাধান করার জন্য কেবল rxjs-compat ইনস্টল করুন

npm i rxjs-compat --save-dev

এবং নীচের মত এটি আমদানি করুন

import 'rxjs/Rx';

3

নীচে হিসাবে চালিত ইনস্টলেশন প্রথম:

npm install --save rxjs-compat@6

এখন আপনি আমদানি করতে প্রয়োজন rxjsমধ্যে service.ts:

import 'rxjs/Rx'; 

ভাল খবর! সমস্যা স্থির করা হয়েছে।



2

আমি উপরে পোস্ট করা সমস্ত সম্ভাব্য উত্তর চেষ্টা করেছিলাম তাদের কারওরই কাজ হয়নি,

আমি কেবল আমার আইডিই অর্থাৎ ভিজ্যুয়াল স্টুডিও কোডটি পুনরায় চালু করে সমাধান করেছি

এটি কাউকে সাহায্য করতে পারে।


2

আমিও একই ত্রুটির মুখোমুখি হয়েছি। এক সমাধান আমার জন্য কাজ আপনার নিম্নলিখিত পংক্তিগুলি যোগ করার জন্য ছিল service.ts দায়ের পরিবর্তে এর import 'rxjs/add/operator/map':

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

উদাহরণস্বরূপ, ডিবাগিংয়ের পরে আমার app.service.ts এর মত ছিল,

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable()
export class AppService {
    constructor(private http: HttpClient) {}
    getData(): Observable<any> {
        return this.http.get('https://samples.openweathermap.org/data/2.5/history/city?q=Warren,OH&appid=b6907d289e10d714a6e88b30761fae22')
        .pipe(map(result => result));
    }
}

2

যদি 'rxjs / add / অপারেটর / মানচিত্র' আমদানি করার পরে বা 'rxjs / Rx' আমদানি করার পরেও আপনি একই ত্রুটি পেয়ে থাকেন তবে আপনার ভিজ্যুয়াল স্টুডিও কোড সম্পাদকটি পুনরায় চালু করুন, ত্রুটিটি সমাধান হয়ে যাবে।


1

এই সমস্ত লিনাক্স ব্যবহারকারীর জন্য এই সমস্যাটি রয়েছে, rxjs-compat ফোল্ডারটি লক করা আছে কিনা তা পরীক্ষা করুন। আমার ঠিক একই সমস্যা ছিল এবং আমি টার্মিনালে গিয়েছিলাম, পুরো rxjs-compat ফোল্ডারে অনুমতি দেওয়ার জন্য sudo su ব্যবহার করেছিলাম এবং এটি স্থির হয়েছিল। আপনাকে আমদানি করে ধরে নিচ্ছে

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch'; 

প্রজেক্ট.টি ফাইলটিতে মূল। ম্যাপ ত্রুটি ঘটেছে।


1

mapফাংশনে ফাংশনটি ব্যবহার করুন pipeএবং এটি আপনার সমস্যার সমাধান করবে। আপনি এখানে ডকুমেন্টেশন চেক করতে পারেন ।

this.items = this.afs.collection('blalal').snapshotChanges().pipe(map(changes => {
  return changes.map(a => {
    const data = a.payload.doc.data() as Items;
    data.id = a.payload.doc.id;
    return data;
  })
})


0
  import { Injectable } from '@angular/core';
  import { Http } from '@angular/http';
  import 'rxjs/add/operator/map';

  @Injectable({
  providedIn: 'root'
  })
  export class RestfulService {

  constructor(public http: Http) { }

 //access apis Get Request 
 getUsers() {
 return this.http.get('http://jsonplaceholder.typicode.com/users')
  .map(res => res.json());
  }

 }

কমান্ড চালান

 npm install rxjs-compat 

আমি শুধু আমদানি করি

 import 'rxjs/add/operator/map';

বনাম কোডটি পুনরায় চালু করুন, সমস্যা সমাধান হয়েছে।


-1

কৌণিক নতুন সংস্করণ। ম্যাপটি সমর্থন করে না আপনাকে এটি সিএমডি এনপিএম ইনস্টল করে রাখতে হবে - সেভ rxjs-compat এর মাধ্যমে আপনি পুরানো কৌশলটি উপভোগ করতে পারবেন। দ্রষ্টব্য: এই লাইনগুলি আমদানি করতে ভুলবেন না।

import { Observable, Subject } from 'rxjs';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

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