【发布时间】:2015-12-20 05:25:22
【问题描述】:
我正在尝试在我的 http 代码中使用一些 reactiveX。为此,我正在创建一个主题,并尝试调用 onNext 函数,但我收到一条错误消息,指出 subject.onNext 不是函数。
html:<input #search (input)="generateSuggestions($event.target.value)">
ts:
import { Jsonp, Response } from 'angular2/http';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject'
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounce';
import { Injectable } from 'angular2/core';
@Injectable()
export class SearchService {
queryStream = new Subject();
generateSuggestions(query: string) {
this.queryStream.onNext(query)
.debounce(500)
.map(
query => this.jsonp.request( `http://urlendpoint/${query}` )
.map( (res: Response) => res.json() )
.subscribe( results => console.log(results) );
)
}
}
var queryStream = new Subject();
原始异常:TypeError:this.queryStream.onNext 不是函数
我所有的普通 http 函数都可以工作( this.jsonp.request(url/query).map().subscribe() ),但 onNext 运算符不起作用。我在导入 flatMap 时也遇到了问题,它似乎与 map 和 debounce 不在同一个 'rxjs/add/operator/...' 文件夹中。
【问题讨论】:
-
那是因为
onNext()是旧 RxJS (RxJS 4) 的一部分,而在新 RxJS (RxJS 5) 中,该方法称为next() -
为什么会发生如此重大的变化???!!!!!!我正在拔头发……
标签: angular