【问题标题】:some RxJS operators are missing from angular2 CLI project? What to do?angular2 CLI 项目中缺少一些 RxJS 运算符?该怎么办?
【发布时间】:2016-12-04 03:46:16
【问题描述】:

我正在学习 RxJS,我不断尝试许多我觉得有趣的运算符和组合。

我在这里学习表格:http://reactivex.io/documentation/operators.htmlhere

我有一个 Angular2 rc4 CLI 项目 - 所以我使用的是 Typescript。 RxJS 是:5.0.0-beta.6

问题:

我发现 Observable 上没有一些运算符。

例如:我想创建一个 observable,它返回一个对象的一对一键值对: 您可以看到实现的样子,因为我已经采取了from here

// Using Standard JavaScript
var obj = {
  foo: 42,
  bar: 56,
  baz: 78
};

var source = Rx.Observable.pairs(obj);

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Next: ['foo', 42]
// => Next: ['bar', 56]
// => Next: ['baz', 78]
// => Completed

但这是我的编辑器的样子:

Observable.pairs() 没有 Intelisense..

基于this post,我添加了 2 个导入:

import {Observable} from "rxjs/Rx";
import 'rxjs/Rx'; // import all operators and stuff. it's not good practice i know, but only for this example

并尝试为 rxjs 安装比 angular cli 提供的更多类型,但不起作用:

typings install --save --ambient npm:rx/ts/rx.all.d.ts // Unable to resolve "npm:rx/ts/rx.all.d.ts" from "rx"
or
typings install rxjs // Unable to find "rxjs" ("npm") in the registry.

并且还尝试使用:

import * as Rx form 'rxjs/Rx'
myObjProperties$ = Rx.Observable.pairs(myObj) // still doesn't work, same error.

此外,我无法解释为什么将 Observable 对象打印到控制台不起作用。我得到了一个 string-function ,这是没用的。没有原型的东西。

console.log('TheAllmightyObservable : ', Observable) // i get:

// TheAllmightyObservable :  function Observable(subscribe) {
        // this._isScalar = false;
        // if (subscribe) {
            // this._subscribe = subscribe;
        // }
    // }

许多其他运算符也有同样的问题:ofObjectChanges、ofArrayChanges、ofWithSkeduler、pairs - 其中一些并不那么重要 - 但是当我发现一个非常有用的 RxJs 运算符时,我感到很困扰,我不能在 angular2 CLI 项目中使用它。

问题:

  1. angular2 与 RxJS 有什么关系? (我错过了我猜的一般图片..) - 是否有单独的 angular2-rxjs 运算符列表或 RxJS 是完全分离的包,例如可以像 Jquery 一样使用?我的意思是 2 之间没有有线干扰 - 我无法预测。 (可能与消化周期有关?!)

  2. 我在哪里可以找到 angular2 上可用的所有 RxJS 运算符的良好列表 - 假设存在。

  3. 这只是打字稿 - 打字问题吗?如果是这样,如何安装它们以便拥有文档中可用的所有运算符?如果没有可用的类型,如何暂时摆脱"no property/method found on x"这个问题?

非常感谢您花时间阅读并帮助我找到解决方案:)

【问题讨论】:

  • 我遇到了同样的问题here,它有点类似。它仍然没有答案。我在 angular github 上打开了一个问题,但仍然没有找到正确的解决方案。希望您找到解决方案

标签: typescript angular rxjs strong-typing rxjs5


【解决方案1】:

根本问题:您正在使用一个版本的 RxJS,但正在查看另一个版本的文档。

RxJS 5 (beta) 与 Angular 2 一起使用:https://github.com/ReactiveX/rxjs RxJS 4(稳定):https://github.com/Reactive-Extensions/RxJS

这些运算符在新版本中不存在,这就是您看不到它们的原因。

对于您的问题:

1) RxJS 与 Angular2 没有任何关系,你可以在没有 Angular2 的情况下使用 RxJS。 RxJS 只是一个用于创建事件流的库,它与你用来生成事件的东西正交。

2) 如果您使用的是 RxJS 4,那么您可以使用相当不错的 docs。 RxJS 5 仍在进行中,但构建过程会生成一些文档here

3) 在这种情况下,这不是打字问题。

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 2016-09-01
    • 2010-10-19
    • 2022-09-25
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多