我正在尝试在我的 http 代码中使用一些 reactX。为此,我正在创建一个主题,并尝试调用 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();
原始异常(exception):类型错误:this.queryStream.onNext 不是函数
我所有的普通 http 函数都可以工作( this.jsonp.request(url/query).map().subscribe() ),但是 onNext 操作符不起作用。我也无法导入 flatMap,它似乎与 map 和 debounce 不在同一个“rxjs/add/operator/...”文件夹中。
最佳答案
代替
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject'
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounce';
和 :
import * as Rx from "rxjs/Rx";
和
用
Subject
替换 Rx.Subject
用
onNext
替换 next
关于angular - Subject.onNext不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34378248/