我正在玩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);
}
}
答案 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。