我正在使用Angular 2进行术语搜索。它与Heroes教程中使用的代码大致相同。Angular2 - 使用Switchmap从init服务获取数据
我的服务:
search(term: string = null, page: string = null, limit: string = null): Observable<Bibliographie[]> {
let params = new URLSearchParams();
if (term) params.set('q', term);
if (page) params.set('_page', page);
if (limit) params.set('_limit', limit);
return this.http
.get('http://localhost:3000/bibliographie', {search: params})
.map(response => response.json() as Bibliographie[])
.catch(this.handleError);
}
我的组件:
ngOnInit(): void {
this.bibliographies = this.searchTerms
.debounceTime(300)
.switchMap(term => term
? this.bibliographieSearchService.search(term)
: this.bibliographieSearchService.search(null, "1", "20"))
.catch(error => {
console.log(error);
return Observable.of<Bibliographie[]>([]);
});
}
它运作良好,如果我输入的输入对话框中一些文字。问题是,我想在输入任何内容之前得到一些结果。在上面的代码中,我添加了行
: this.bibliographieSearchService.search(null, "1", "20"))
为此目的,希望当term为null时,会显示一页结果。但它只在清除输入对话框时才起作用。我也尝试用另一个服务函数在init上加载数据。但是,搜索不再有效。
有什么想法?
为此,您需要更改查询。 –
问题是:在初始化时,没有数据通过我的代码从服务中加载。我试图用另一个函数直接在ngOnInit()中加载数据,但术语搜索不再有效... – Fabien