【发布时间】:2016-04-03 21:37:38
【问题描述】:
我不明白 Subject 对象如何用于我试图在 Angular2 中实现的建议/搜索服务。
假设 每次输入更改都会调用 generateSuggestions,用于自动完成。
我不明白为什么我不能从“next()”调用中得到一些东西,打字稿编译器说它返回一个 void 类型。
我的目标是将每个更改提交给一个对象,该对象将决定每 500 毫秒调用一次服务器上的函数,而不是在每个键条目上发送垃圾邮件。
import { Jsonp, Response, Http } from 'angular2/http';
import * as Rx from 'rxjs/Rx';
import { Injectable } from 'angular2/core';
@Injectable()
export class SearchService {
queryStream = new Rx.Subject();
constructor(public http: Http) {
}
generateSuggestions(query: string) {
this.queryStream
.next(query)
.debounce(500) // Compiler error: Debounce does not exist on type "void"
.map(
query => this.http.get('hellow')
.map( (res: Response) => res.json() )
.subscribe( results => console.log(results) )
);
}
}
我可以在普通的 JS/Typescript 中做到这一点,但我真的很想尝试使用 RxJs,因为它已经被 Angular2 使用了。
这里犯了什么错误?他们的官方网站上没有任何示例,文档真的很差。
【问题讨论】:
-
您应该观看this video 了解如何进行预输入。
-
我在看到那个视频后做了一些修改,rxJs 主题不再是服务的一部分。
标签: typescript angular rxjs