我目前在我的项目中使用 NgRx Data 来处理新闻实体。
我有一个解析器来检查是否加载了新闻实体,然后路由到 /news 页面(我在其中显示新闻)
解析器正在监听loaded$ observable,如果它是假的,他将调用getAll 方法来获取消息,然后将loaded 设置为true。
但是我实现了无限滚动,现在只想通过使用 .getWithQuery 方法查询来获取新闻。这工作正常,但是当我通过查询获得消息时,发送的操作:
“ngrx/data/get/many/success”只是改变加载标志而不是加载标志。
因此解析器永远不会路由到页面。getWithQuery 成功完成后,有什么办法可以更改加载的标志吗?我的解析器目前看起来像这样:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.newsEntityService.loaded$
.pipe(
tap(loaded => {
if (!loaded) {
this.newsEntityService.getAll(); // <-- here I want to call .getWithQuery(queryParams)
}
}),
filter(loaded => !!loaded),
first()
);
}
我尝试像这样手动设置加载的标志:
this.newsEntityService.getWithQuery({startIndex: '0', endIndex: '5'}).pipe(
tap(news => this.newsEntityService.setLoaded(true))
);
但这不起作用。
我还在文档中进行了搜索,发现您可以覆盖默认减速器,但我真的不知道这是如何完成的。
https://ngrx.io/guide/data/entity-reducer#entity-cache-metareducers