为了账号安全,请及时绑定邮箱和手机立即绑定

重置 ReplaySubject 值

重置 ReplaySubject 值

慕森王 2023-05-19 14:56:21
我有这样的文件结构:门面.ts状态.ts组件.ts在facade我有:...getArticles(): Observable<Article> {  return this.articleService.fetchAll();}...在state我有:...triggerArticlesFetch$ = new ReplaySubject<void>(1);articles$ = this.triggerArticlesFetch$.pipe(  switchMap(() => this.fc.getArticles()),  shareReplay(1));loadArticles(): void {  this.triggerArticlesFetch$.next();}getArticles(): Observable<ArticleShare[]> {  return this.articles$;}...最后component我有:...`  <span> {{ articles$ | async | json }} </span>`......articles$: Observable<Article> = this.st.getArticles();ngOnInit() {  this.st.loadArticles();}...但是我在“使”此数据“无效”方面遇到了一些问题(组件是可重用的 - 并且状态包含以前的数据)。[]/null articles$每次调用时清除/重置(可能在状态文件中)的最佳方法是什么loadArticles()?
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

从我的评论(据我了解)展开,每次初始化组件时,可观察对象都应以[](or ) 开头。null我能想到的最快解决方法是将 a 管道输入startWith到源代码中。


尝试以下


状态


...

triggerArticlesFetch$ = new ReplaySubject<void>(1);


articles$ = this.triggerArticlesFetch$.pipe(

  switchMap(() => 

    this.fc.getArticles().pipe(

      startWith([]) // or `null` as per requirement

    )

  ),

  shareReplay(1)

);


查看完整回答
反对 回复 2023-05-19
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信