在Rx.observable上找不到

时间:2016-01-01 23:52:53

标签: angular typescript rxjs

我正在玩https://github.com/Reactive-Extensions/RxJS尝试使用Typescript和Angular 2来运行他们的示例。当我编译代码时,它抱怨“类型'Observable< {}>上不存在”属性'拔出' ;'”。我无法弄清楚为什么没有采摘。是否为rxjs 5删除了它?

使用:

角度2.0.0-beta.0 rxjs 5.0.0-beta.0

代码:

import {Component} from 'angular2/core';
import {FORM_DIRECTIVES} from 'angular2/common';
import {Http} from 'angular2/http';
import {Observable} from 'rxjs/Observable';

import {Title} from '../providers/title';

@Component({
  selector: 'home',
  directives: [...FORM_DIRECTIVES],
  providers: [Title],
  pipes: [],
  styles: [require('./home.css')],
  template: require('./home.html')
})
export class Home {
  wikisearch: any = {};

  // TypeScript public modifiers
  constructor(public title: Title, public http: Http) {
    var input = document.getElementById('wikisearch');

    /* Only get the value from each key up */
    var keyups = Observable.fromEvent(input, 'keyup')
      .pluck('target', 'value')
      .filter((text) => text.length > 2);
  }
}

1 个答案:

答案 0 :(得分:5)

Angular 2使用RxJS 5(https://github.com/ReactiveX/RxJS),这是对当前版本(https://github.com/Reactive-Extensions/RxJS)的完全重写。 RxJS 5仍处于测试阶段。 RxJS 4中的某些运算符尚未在RxJS 5中可用。pluck就是这种情况。我建议您查看RxJS 5 documentation以及migration guide,因为这两个版本之间存在一些API差异。

对于此特定示例,您可以使用pluck轻松替换map运算符:

var keyups = Observable.fromEvent(input, 'keyup')
    .map((target) => target.value)
    .filter((text) => text.length > 2);
自版本now available起,

更新: pluck在RxJS 5中为5.0.0-beta.1