map虽然是import,但不是函数(Rxjs)

And*_*nov 18 rxjs ionic2 angular

有很多关于"地图不是函数"的问题,但几乎每个人都没有导入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"
}  
Run Code Online (Sandbox Code Playgroud)

这就是我创建服务的方式:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试重新安装rxjs模块,但仍然没有成功.也许它与离子2或当前的角度版本不兼容?

你觉得伙计们怎么样?

干杯,

安德烈

des*_*oga 14

这是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);
});
Run Code Online (Sandbox Code Playgroud)


cro*_*umb 10

我有同样的问题.

我正在使用jspm与system.js.对我来说,当我使用jspm updateangular2-http 升级我的系统时rxjs@5.0.0-beta.12,但是angular2-dynamic-component@0.0.50需要rxjs@5.0.0-rc.2哪个是"rxjs"映射到的.我想因为它是最新版本?我通过检查config.jsjspm创建的文件发现了所有这些.

显然,当我使用声明时...

import 'rxjs/add/operator/map';
Run Code Online (Sandbox Code Playgroud)

...它正在将地图添加到rxjs版本5.0.0-beta.12,而不是 http正在使用的版本.我不得不把线改成......

import 'npm:rxjs@5.0.0-beta.12/add/operator/map'; 
Run Code Online (Sandbox Code Playgroud)

......然后它奏效了.


小智 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';
Run Code Online (Sandbox Code Playgroud)

并在需要时调用它。

import './rxjs-operators';
Run Code Online (Sandbox Code Playgroud)