我正在尝试从数组中创建一个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
我的目标是使用reduce
或scan
等运算符覆盖Observable序列,因为标准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
)。
谢谢!
答案 0 :(得分:4)
有多种解决方案:
在您的示例中,您只是导入Observable
,但是,您使用.from()
方法从数组创建一个observable。因此,如果要使用它,则必须导入.from()
方法。 reduce
运算符也是如此。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/from';
import 'rxjs/add/operator/reduce';
Observable
正在从rxjs/Rx
引入,因此以这种方式拉动它将自动为您提供所有操作符和方法。
import { Observable } from 'rxjs/Rx';
这两种方法的最大区别在于您不会使用第一种方法一次性导入所有运算符。当您在生产模式下工作时,它会很有用。
答案 1 :(得分:1)
您正在导入最小Observable
:
import { Observable } from 'rxjs/Observable';
所以要使用from
,你也需要这个导入:
import 'rxjs/add/observable/from';