【问题标题】:Observable from an array doesn't work in TypeScript来自数组的 Observable 在 TypeScript 中不起作用
【发布时间】:2016-12-15 04:52:55
【问题描述】:

我正在尝试从数组中创建一个 observable,正如 https://github.com/ReactiveX/rxjs/blob/master/doc/observable.md 中的文档所述:

import {Observable} from 'rxjs/Observable';
let theList = Observable.from(sites);

但我明白了:

TypeError: Observable_1.Observable.from is not a function

我的目标是在 Observable 序列上使用像 reducescan 这样的运算符,因为标准的 Observable 似乎不支持,如下所示:

this.theList = new Observable(observer => {
  // this works
  observer.next(sites);
});

this.sub = this.theList.reduce(function() {
  // this is never called
  return acc;
}).subscribe(l => {
  // this is never called
  this.finalList = l;
});

代码可以在这个 Plnkr 中找到:http://plnkr.co/edit/cKEqtp (src/app.ts)。

谢谢!

【问题讨论】:

    标签: angularjs typescript rxjs


    【解决方案1】:

    您正在导入最小的Observable

    import { Observable } from 'rxjs/Observable';
    

    所以要使用from,你也需要这个导入:

    import 'rxjs/add/observable/from';
    

    【讨论】:

      【解决方案2】:

      有多种解决方案:

      1 - 导入特定元素

      在您的示例中,您只是导入了Observable,但是,您使用.from() 方法从数组中创建一个可观察对象。所以如果你想使用它,你必须导入.from() 方法。 reduce 运算符也是如此。

      import { Observable } from 'rxjs/Observable';
      import 'rxjs/add/observable/from';
      import 'rxjs/add/operator/reduce';
      

      2 - 导入所有运算符和方法

      Observable 是从rxjs/Rx 引入的,因此以这种方式拉取它会自动为您获取所有运算符和方法。

      import { Observable } from 'rxjs/Rx';
      

      有什么区别?

      这两种方法的最大区别在于,您不会使用第一种方法一次导入所有运算符。当您在生产模式下工作时,它会很有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-09
        • 1970-01-01
        • 2017-06-30
        相关资源
        最近更新 更多