有很多关于&#34的问题;地图不是一个功能",但差不多 每个人都没有导入rxjs库。
在我的情况下,我进行导入,但错误仍然存在。
我使用Ionic 2,这就是我的package.json依赖项的样子:
"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"
}
这就是我创建服务的方式:
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));
}
}
我也尝试重新安装rxjs模块,但仍然没有成功。 也许它与离子2或当前的角度版本不兼容?
你认为你们有什么想法?
干杯,
的Andrej
答案 0 :(得分:10)
我遇到了同样的问题。
我正在使用带有system.js的jspm。对我来说,当我使用jspm update
angular2-http需要rxjs@5.0.0-beta.12
升级我的系统时,angular2-dynamic-component@0.0.50
需要rxjs@5.0.0-rc.2
,这就是" rxjs"映射到。我想因为它是最新版本?我通过检查由jspm创建的config.js
文件来发现所有这些。
显然当我使用声明时......
import 'rxjs/add/operator/map';
...它正在将地图添加到rxjs版本5.0.0-beta.12
,这是不 http正在使用的版本。我不得不将线路改为......
import 'npm:rxjs@5.0.0-beta.12/add/operator/map';
......然后它奏效了。
答案 1 :(得分:5)
这是2018年。 我遇到了同样的问题。这对我有用:
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
this.http.get(url)
.pipe(map(r => r.json()))
.subscribe(resp => {
resp = resp.json();
console.log(resp);
});
答案 2 :(得分:2)
创建文件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';
并在需要时调用它。
import './rxjs-operators';
答案 3 :(得分:1)
尝试
import {Observable} from 'rxjs/Observable';
getData() : Observable<any> {
this.http.get(this.dataUrl)
.map(response => response.json())
.subscribe(result => console.log(result));
}
答案 4 :(得分:1)
请按如下所示导入地图
import { map } from 'rxjs/operators';
代替“ rxjs / add / operator / map”
答案 5 :(得分:0)
试
从@ angular / core&#39;导入{Injectable}; 从&#39; @ angular / http&#39;中导入{Http,Response,Headers,URLSearchParams,RequestOptions}; 从&#39; rxjs / Observable&#39;中导入{Observable}; import&#; rxjs / Rx&#39;;
答案 6 :(得分:0)
您需要导入地图操作符:
import 'rxjs/add/operator/map'
如果这不起作用,请尝试
import 'rxjs/Rx';
请注意,对于 RxJS 6.x.x 及更高版本,您必须使用可管道操作符,如下所示:
import { map } from 'rxjs/operators';
import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { Observable } from 'rxjs';
@Injectable()
export class LoginService {
constructor(private http: Http) {}
private dataUrl = '/node';
getData() : any {
this.http.get(this.dataUrl).pipe(
map(response => response.json())
.subscribe(result => console.log(result)));
}
}
答案 7 :(得分:-1)
import import'rxjs / Rx'; 5.5.2版本有一些问题,因为每次导入我碰巧从import {Observable}从'rxjs / Rx'改为从'rxjs / Observable'导入{Observable};