在Observable中搜索数据

时间:2017-04-27 14:17:41

标签: mongodb angular

我想要一个搜索输入,在keypress上显示结果。 目前,这就是我所拥有的:

mylist: Observable<MyData[]>;
term = new FormControl();
    ngOnInit() {
        this.mylist = this.term.valueChanges
                    .debounceTime(400)
                    .distinctUntilChanged()
                    .switchMap(term => this.searchData(term));
    }

    searchData(valueToSearch:string){
        if(valueToSearch == ''){
            this.channels = MyData.find();
        }
        return MyData.find({'title':new RegExp(valueToSearch)});
    }

效果很好,但我很难初始化&#34; mylist&#34;,我认为我的方法根本没有效果。

基本上,我想在我的组件初始化时:

this.mylist = MyData.find();

在按键上,我希望我的搜索在this.mylist上完成,以避免做太多的请求。 可能吗 ? 我希望我能说清楚。

感谢前进的人。

1 个答案:

答案 0 :(得分:1)

您必须subscribe映射数据。修改为以下代码

this.term.valueChanges
    .debounceTime(400)
    .distinctUntilChanged()
    .switchMap(term => this.searchData(term))
    .subscribe((result) => {
            this.mylist = result
        });;

@Julia是正确的,请修改您的searchData()功能,如下所示

searchData(valueToSearch:string):Observable<any> {
        if(valueToSearch == ''){
            this.channels = MyData.find();
        }
        return <Observable<any>>MyData.find({'title':new RegExp(valueToSearch)});
    }