首页 > 解决方案 > RsJX 'Map' 运算符在 Angular 6 中不起作用

问题描述

我正在尝试使用mapRxJS 中的运算符,但它会抛出一个错误说

“可观察”类型上不存在属性“地图”。

这是代码

    import { Injectable } from "@angular/core";
    import { Http } from "@angular/http";
    import "rxjs/add/operator/map";
    @Injectable()

    export class DataService {
     constructor(public http: Http) {}

     getData() {
       return this.http
        .get("https://jsonplaceholder.typicode.com/users")
        .map(res => res.json());
      }
    }

标签: angulartypescriptangular6rxjs6

解决方案


For firstHttp在比Angular 4更高的版本中被弃用。而不是它,您需要使用HttpClientwith HttpClientModulefrom "@angular/common/http"。并且使用HttpClient您将获得JSON解析结果,因此您不需要res.json()更长的时间。

第二个map新版本的RxJS正在以另一种方式使用。它现在是可管道的,您需要将它与pipe.

import { Injectable } from "@angular/core";
import { HttpClient} from "@angular/common/http";

@Injectable()    
export class DataService {
  constructor(public httpClient: HttpClient) {}

  getData() {
    return this.httpClient
               .get("https://jsonplaceholder.typicode.com/users")
  }
}

使用map运算符

import { map } from 'rxjs/operators';

...

someFunction() {
   this.httpClient.get("https://jsonplaceholder.typicode.com/users")
                  .pipe(map(res) => something with res);
}

...

推荐阅读