Я пытаюсь повторно использовать обычные эффекты в моем приложении NgRx Angular 6.В настоящее время я извлек сервис-конструктор effect , который помогает создать реализацию effect .Я хотел бы уменьшить дубликат кода еще больше, хотя.Можно ли динамически создавать и регистрировать эффекты без декларативного @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()
означает, что я должен сделать это таким образом?