首页 > 解决方案 > 如何为 ngrx/data 中的操作编写效果?

问题描述

我在一个带有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中的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 创建效果。

提前谢谢了。

标签: javascriptangularreduxngrxngrx-data

解决方案


你在你的例子中是一种可能的方式。

你应该监听 ngrx/data 类型的动作并引起你需要的东西。ngrx/data 非常原始并且有很多限制

他们推荐的是扩展基类并改变行为,添加新的动作/效果/减速器等。

如果您能提供一个如何更改流程的示例,那就太好了。


推荐阅读