我有这样的文件结构:门面.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)
);
添加回答
举报
0/150
提交
取消