【问题标题】:Angular2 RxJS why doesn't map() work?Angular2 RxJS 为什么 map() 不起作用?
【发布时间】:2016-07-14 12:25:28
【问题描述】:

Angular2 http 请求返回 observables。在 observable 的文档中,您可以在 observable 上使用函数 .map()

但是当我在我的 http observable 上使用 .map() 时,我得到了这个错误:

argument is not a function. Are you looking for `mapTo()`?

.mapTo() 似乎提供了一些类似的行为,但我想知道....为什么.map() 在这里不起作用?

编辑:

谢谢,这里有更多信息。我正在使用 webpack 和 Angular 2.0.0-beta.8。

缩写的实际代码如下:

  import { Observable, map, concatMap, flatMap, reduce, subscribe } from 'rxjs';

  getRequest(endpoint) {
    return this.http.get('https://api.fitbit.com/1/user/-/' + endpoint,
      {
        headers: {
          Authorization: 'Bearer ' +
          localStorage.getItem(this.name + 'AccessToken'),
          'Content-Type': 'application/json'
        }
      }).map(response => response.json());
  }

  var profileRequest = this.getRequest('profile.json');
  var profileRequestLog = profileRequest.map('profile fetched');

【问题讨论】:

  • 我对此很陌生,所以不确定我是否可以提供帮助。您能否发布一个示例,说明您是如何提出 http 请求的,以及您使用的 angular 2 的版本?
  • 如果你正确地包含了 RxJS,你可以在 observable 上使用.map()。你这样做了吗?您确定它已正确加载和映射吗?显示您的代码和模块配置将使我们更有可能为您指明正确的方向。
  • 能否添加一些代码?

标签: angular rxjs


【解决方案1】:

请确保Rx.min.js 文件包含在index.html 中。

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.9/Rx.min.js">
</script> //CDN reference

然后您可以导入以下内容以使用Observable 及其operators

import {Observable} from 'rxjs/Observable';
import 'rxjs/Rx';

【讨论】:

  • 我已经包含了一堆导入,但是所有这些导入都是必要的吗? angular2不应该包含相关的RxJS函数,比如map()吗?
  • 是的 rxjs 会添加它,但你必须按照我的方式。导入 rxjs/Rx 将导入所有 rx 运算符。注意,如果你这样做,你不需要调用/导入单个操作员。
猜你喜欢
  • 1970-01-01
  • 2012-07-30
  • 2017-07-09
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
相关资源
最近更新 更多