2016-10-30 16 views
7

có rất nhiều câu hỏi về "bản đồ không phải là một chức năng", nhưng hầu hết mọi người không nhập thư viện rxjs gần như .bản đồ không phải là chức năng (Rxjs) mặc dù nhập

Trong trường hợp của tôi, tôi thực hiện việc nhập, nhưng lỗi vẫn còn ở đó.

tôi làm việc với Ionic 2 và đây là cách phụ thuộc package.json của tôi trông giống như:

"dependencies": { 
"@angular/common": "2.0.0", 
"@angular/compiler": "2.0.0", 
"@angular/compiler-cli": "0.6.2", 
"@angular/core": "2.0.0", 
"@angular/forms": "2.0.0", 
"@angular/http": "2.0.0", 
"@angular/platform-browser": "2.0.0", 
"@angular/platform-browser-dynamic": "2.0.0", 
"@angular/platform-server": "2.0.0", 
"@ionic/storage": "1.0.3", 
"ionic-angular": "2.0.0-rc.1", 
"ionic-native": "2.2.3", 
"ionicons": "3.0.0", 
"rxjs": "5.0.0-beta.12" 
} 

Vì vậy, đó là cách tôi tạo ra dịch vụ của tôi:

import { Injectable } from '@angular/core'; 
import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
import { Observable } from 'rxjs'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class LoginService { 
    constructor(private http: Http) { 

    } 

    private dataUrl = '/node'; 

    getData() : any { 
     this.http.get(this.dataUrl) 
      .map(response => response.json()) 
      .subscribe(result => console.log(result)); 
    } 
} 

Tôi cũng đã cố gắng để cài đặt lại mô-đun rxjs, nhưng vẫn không thành công. Có thể nó không tương thích với ionic 2 hoặc phiên bản góc hiện tại?

Bạn nghĩ sao?

Chúc mừng,

Andrej

+0

Bạn có thể hiển thị toàn bộ thông báo lỗi không? – martin

+0

hãy thử với điều này cũng 'nhập 'rxjs/Rx'' – micronyks

Trả lời

2

tạo file rxjs-operators.ts

// 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'; 

và gọi nó là khi nếu cần thiết.

import './rxjs-operators'; 
1

thử

import {Observable} from 'rxjs/Observable'; 

getData() : Observable<any> { 
     this.http.get(this.dataUrl) 
      .map(response => response.json()) 
      .subscribe(result => console.log(result)); 
    } 
7

tôi đã cùng một vấn đề.

Tôi đang sử dụng jspm với system.js. Đối với tôi khi tôi nâng cấp hệ thống của mình bằng cách sử dụng jspm update angular2-http yêu cầu [email protected], nhưng [email protected] yêu cầu [email protected] thì đó là những gì "rxjs" ánh xạ tới. Tôi cho rằng đó là phiên bản mới nhất? Tôi đã khám phá tất cả điều này bằng cách kiểm tra tệp config.js được tạo bởi jspm.

Vì vậy, rõ ràng khi tôi sử dụng báo cáo kết quả ...

import 'rxjs/add/operator/map'; 

... nó đã được bổ sung thêm bản đồ để để rxjs phiên bản 5.0.0-beta.12 đó là không phiên bản mà http đã sử dụng. Tôi phải thay đổi dòng để ...

import 'npm:[email protected]/add/operator/map'; 

... và sau đó nó hoạt động.

+0

cảm ơn !.Tôi chỉ thay đổi số phiên bản rxjs trong mã nhập của bạn và nó đã làm việc cho tôi. –

0

thử

nhập {Injectable} từ '@ góc/lõi'; nhập {Http, Response, Headers, URLSearchParams, RequestOptions} từ '@ angular/http'; nhập {Observable} từ 'rxjs/Observable'; nhập 'rxjs/Rx';

-1

nhập khẩu 'rxjs/Rx'; có một số vấn đề với phiên bản 5.5.2 cho mỗi lần nhập i xảy ra thay đổi từ nhập {Observable} từ 'rxjs/Rx' để nhập {Observable} từ 'rxjs/Observable';

+1

Hai điều: Câu của bạn chưa hoàn thành. Và nó sẽ là tuyệt vời nếu bạn có thể xây dựng * hoặc * sao lưu yêu cầu của bạn với một nguồn. – MrPaulch

+0

@MrPaulch: Khi chúng ta nhập Quan sát như nhập {Observable} từ 'rxjs/Rx' tạo ra các vấn đề và chúng ta cần chuyển sang {Observable} từ 'rxjs/Observable'; –

Các vấn đề liên quan