我在一个使用ngrx的项目中工作,也使用ngrx的其他库和包,如ngrx/entity或ngrx/data。
- 有时 * 我需要 * 在 * 某些动作中 * 创建效果属于 *(就被分派而言)到ngrx/data。
我发现一些困难的地方是调度其他动作,这些动作强烈依赖于由ngrx/data以自动方式调度的其他动作,甚至是由我自己(自定义)调度的其他动作,如下所示
...
@Injectable()
export class FooEffects {
fooSelected$ = createEffect(() =>
this.actions$
.pipe(
ofType(FooActions.fooSelected),
map((action) => this.entityActionFactory.create<Foo>('Foo', EntityOp.QUERY_LOAD),
))
);
...
constructor(private actions$: Actions, private entityActionFactory: EntityActionFactory) { }
}
...
那么,我如何监听ngrx/data中的Action,如QUERY_LOAD,常见的get/all或其他任何内容,以实现新效果的创建?是否存在类似于
fooNgrxDataEffectForQueryLoad$ = createEffect(() =>
this.actions$
.pipe(
ofType(('Foo', EntityOp.QUERY_LOAD)),
或者换一种方式问,如何在ngrx/data中为“NATIVE”操作编写效果?
我知道创建ngrx/data是为了尽可能地摆脱Actions,Selectors,Effects,Reducers,因此具有更少的样板文件。但是,应该有一种方法可以从ngrx/data创建效果。
非常感谢。
2条答案
按热度按时间ego6inou1#
你的例子中的是一种可能的方法。
你应该监听ngrx/data类型的操作,并导致你需要的东西。ngrx/data是相当原始的,有a lot of limitations。
他们推荐的是to extend base classes and to change behavior there添加新的动作/效果/还原器等。
如果您能提供一个示例来说明如何更改流,那就太好了。
u5rb5r592#
您可以使用ofEntityType和ofEntityOp管道操作符来为NgRx数据操作写入效果。在上面的例子中,你可以说:
看起来OP在这篇文章中也回答了他自己的问题:https://betterprogramming.pub/write-effects-for-actions-in-ngrx-data-214c93869758