我正在尝试在我的 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/

10-13 01:05