首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rxjs中的fromEvent未按预期工作

rxjs中的fromEvent未按预期工作
EN

Stack Overflow用户
提问于 2019-05-29 04:29:14
回答 1查看 910关注 0票数 0

我已经创建了一个具有搜索功能的组件,它调用api并在页面上显示数据。获得搜索结果后,我将它们存储在localStorage中,以便在您导航回相同的搜索组件页面时恢复数据。在我将存储的数据分配回formEvent可观察结果属性this.searchResult$之前,一切都很正常。问题是,一旦我通过其他途径返回到同一页面,fromEvent就不再触发了。

代码语言:javascript
复制
  ngOnInit() {
 const searchEvent$ = fromEvent<any>(this.inputSearch.nativeElement, 'keyup').pipe(tap(() => { console.log('working'); }));
    this.searchResult$ = searchEvent$
      .pipe(
        tap(() => { this.isDataOn = true }),
        map(event => event.target.value),
        filter(value => value ? true : false),
        switchMap(search => this.notesService.onSearchNotes(search)))
      )
 if (!this.isDataOn) {
      this.refreshData()
    }
}
refreshData() {
    if (localStorage.getItem("queryStack")) {
      const data = JSON.parse(localStorage.getItem("queryStack") || "[]");
      console.log(data);
      this.searchResult$ = of(data);
    }
  }
EN

Stack Overflow用户

回答已采纳

发布于 2019-05-29 04:41:25

尝试以下方法,将本地存储中保存的任何数据与从服务器获取的结果合并,以响应keyup事件。

代码语言:javascript
复制
// in your imports
import { merge } from 'rxjs';

ngOnInit() {
    const searchEvent$ = fromEvent<any>(this.inputSearch.nativeElement, 'keyup').pipe(tap(() => { console.log('working'); }));
    this.searchResult$ = merge(
        of(this.getSavedData()),
        searchEvent$
            .pipe(
                map(event => event.target.value),
                filter(Boolean),
                debounceTime(1000),
                distinctUntilChanged(),
                switchMap(search => this.notesService.onSearchNotes(search))
            )
    );
}
getSavedData() {
    const localStorageValue = localStorage.getItem("queryStack") || "[]";
    try {
        return JSON.parse(localStorageValue);
    } catch (ex) {
        console.error('Error parsing JSON:', ex);
        return [];
    }
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56349643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档