0
我想在我的應用程序的列表上進行自動完成搜索。 搜索工作得很好,但當頁面加載時,我無法顯示列表的所有值。自動完成搜索默認值
例如,當我到達我的搜索頁面時,我希望顯示列表的內容,並且在執行搜索時我希望過濾值。 該過濾器完美地工作,但「默認顯示」似乎不工作。
下面是代碼:
itemList: Observable<Item[]>; //List displayed on the view
term = new FormControl();
ngOnInit() {
//A search is done when the user type something in the search bar
//then load on the list
this.itemList = this.term.valueChanges
.debounceTime(400)
.distinctUntilChanged()
.switchMap(term => this.searchItem(term));
}
/**
* Search of an item by a value.
* If there is no value to search, load all item
*/
searchItem(valueToSearch:string){
var result;
var userItemId;
if(Meteor.user() !== undefined) {
userItemId = Meteor.user().profile.ItemIds;
}
if(valueToSearch == ''){
result = Items.find({'_id': {$nin: userItemId}});
}
else {
var regexSearch = new RegExp(valueToSearch.toLowerCase(), "i");
result = Items.find({'title': regexSearch, '_id': {$nin: userItemId}});
}
return result;
}
基本上,我似乎無法使那部分工作時的頁面加載:
...
if(valueToSearch == ''){
result = Items.find({'_id': {$nin: userItemId}});
}
...
也許這是一個「訂閱」的問題,我對功能不是很熟悉。
searchItem()應該返回一個可觀察 – Skeptor
謝謝你的答案,但我不明白這一點,會是什麼變化的時候,頁面加載?我的意思是,當我做研究時,它工作正常。你能否多解釋一下:) –
switchmap函數需要一個參數並返回一個流。如果我執行同樣的任務,我會寫一個答案。 – Skeptor