angular - 使用 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()
意味着我必须这样做?
解决方案
推荐阅读
- javascript - 如何使用java脚本在每天的某个时间限制少数用户编辑谷歌表格
- rspec - 在规范测试中存根 chef_environment 变量
- javascript - 单击时打开菜单
- go - 通过分隔符拆分字符串,但提供指向应该拆分的字符串的指针
- c++ - 如何找到出现次数最多的字母?C++
- python - 我正在尝试在 tkinter 中编写一个简单的转换器,但我似乎对 convert 函数有问题
- node.js - 使用 ava 和 proxyquire 用 sinon 加载模块后无法存根方法
- discord.js - 是否可以使用 Discord.js 收集用户过去发送的消息?
- java - Java 内存泄漏与数据源
- ocr - Google Vision API OCR - 不能很好地识别阿拉伯语