Создавать повторно используемые классы эффектов с помощью ngrx? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь повторно использовать обычные эффекты в моем приложении 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() означает, что я должен сделать это таким образом?

...