我正在使用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