首页 > 解决方案 > 使用 ngrx 创建可重复使用的效果类?

问题描述

我正在尝试在我的 NgRx Angular 6 应用程序中重用常见效果。目前,我已经提取了一个帮助创建效果实现的效果构建器服务。不过,我想进一步减少重复代码。是否可以在没有声明性装饰器或其他方式的情况下动态构建和注册效果?@Effect()

这是我拥有的两个效果类的示例,一个用于我的应用程序中的每个模块。除了传递给方法的一些配置数据外,它们基本相同buildEffectX()

模块1效果类:

@Injectable()
export class Module1Effects {

    constructor(private store: Store<AppState>, private effectsBuilder: MyEffectsBuilder) { }

    @Effect()
    effect1$: Observable<Action> = this.effectsBuilder.buildEffect1(this.store, "Module1");

    @Effect({ dispatch: false })
    effect2$: Observable<Action> = this.effectsBuilder.buildEffect2(this.store, "Module1");

    @Effect()
    effect3$: Observable<Action> = this.effectsBuilder.buildEffect3(this.store, "Module1");
}

模块2效果类:

@Injectable()
export class Module2Effects {

    constructor(private store: Store<AppState>, private effectsBuilder: MyEffectsBuilder) { }

    @Effect()
    effect1$: Observable<Action> = this.effectsBuilder.buildEffect1(this.store, "Module2");

    @Effect({ dispatch: false })
    effect2$: Observable<Action> = this.effectsBuilder.buildEffect2(this.store, "Module2");

    @Effect()
    effect3$: Observable<Action> = this.effectsBuilder.buildEffect3(this.store, "Module2");
}

如果可能的话,我想进一步减少这个样板。这里有前进的道路,还是声明性的本质@Effect()意味着我必须这样做?

标签: angularngrxngrx-effects

解决方案


推荐阅读