为什么我在导入rxjs / Rx时仅获得一些函数

时间:2016-07-02 11:43:26

标签: typescript angular rxjs angular2-template rxjs5

我这样导入:

import { Observable } from 'rxjs' ;

import { Observable } from 'rxjs/Rx' ;

宣布像这样的财产

ob : Observable<any>;

当我在构造函数中编写this.ob.fromarray()时,我只获得了subscribe以及2或3个其他函数的IntelliSense,而不是fromarray所需的函数。

2 个答案:

答案 0 :(得分:1)

您可能想要导入整个ReactiveXJS包,如下所示:

import 'rxjs/Rx';

另一方面,Observable.fromArray(arr: Array<any>)是一种静态方法 - 您无法在实例上使用它。虽然文档说这个方法已被弃用,但现在应该使用Observable.from()

例如使用它:

//our root app component
import {Component} from '@angular/core';
import {Observable} from 'rxjs/Rx';
import 'rxjs/Rx';

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div *ngFor="let item of output">{{item}}</div>
  `,
  directives: []
})
export class App {
  ob: Observable<any>;

  someArray: Array<number> = [ 1, 2, 3, 4, 5, 6, 7, 8 ];
  output: Array<number> = [];

  constructor() {
    this.ob = Observable.from(this.someArray);

    this.ob.subscribe((data) => {
      this.output.push(data);
    });
  }
}

答案 1 :(得分:-1)

你需要像这样单独导入运算符:

import {Observable} from "rxjs/Observable";

import "rxjs/add/observable/interval";
import "rxjs/add/operator/take";
import "rxjs/add/operator/map";
import "rxjs/add/operator/bufferCount"

check this for example

我认为fromarray()已被弃用。请改用()。 我希望这可以帮到你。