У меня есть два приложения в моно-репо, одно будет бесплатным подмножеством другого, поэтому все функции в бесплатном включены в несвободное.
Я пытаюсь настроить свои эффекты так, чтобы был базовый класс эффектов, который реализует все общие эффекты, а затем расширяет его в несвободном проекте для добавления дополнительных эффектов.Это не работаетОба приложения могут использовать основные эффекты до тех пор, пока это все эффекты, которые я определяю, но как только я добавляю дополнительные классы для несвободных классов, он перестает распознавать основные эффекты.
Вот наборup:
- core.effects.ts включает класс CoreEffects, который определяет 2 ванильных эффекта - LoadLayout и ToggleSidebar
- not-free.effects.ts включает класс NotFreeEffects, который расширяет класс CoreEffects
- free.effects.ts включает класс FreeEffects, который расширяет класс CoreEffects и не определяет никаких дополнительных эффектов.
- В моем модуле я импортирую модуль «Эффекты» и указываю унаследованные эффектыкласс:
EffectsModule.forRoot([NotFreeEffects])
и EffectsModule.forRoot([FreeEffects])
.Если я правильно понимаю, это означает, что мои унаследованные классы настроены правильно, так как основные эффекты все еще видны (если я не определю другие эффекты в унаследованном классе)
В качестве примера,Эффект LoadLayout выглядит следующим образом (остальные похожи):
@Effect()
loadLayout$: Observable<Action> = this.actions$
.ofType(CoreLayoutActions.LOAD_LAYOUT)
.switchMap(() => this.layoutService.loadLayout())
.map(
(layoutState: ICoreLayoutState) =>
new CoreLayoutActions.LoadLayoutSuccessAction(layoutState)
);
Когда я запускаю любое приложение с этой настройкой, все работает.Я добавил операторы журнала в свои редукторы, чтобы видеть, когда сообщение LoadLayoutSuccess передается и обрабатывается в редукторе.
Как только я добавляю еще один эффект в класс NotFreeEffect (т. Е. Тот, который не используется бесплатным приложением)основные эффекты больше не обрабатываются - мои операторы журнала в редукторах больше не указывают, что LoadLayoutSuccess когда-либо отправлялся. Ничего не изменилось, кроме добавления совершенно несвязанного эффекта в несвободный класс .Бесплатное приложение продолжает работать, несвободное - нет.Если я уберу этот дополнительный эффект из несвободного, он снова начнет распознавать базовые эффекты.
Чего мне не хватает?Должны ли вы иметь возможность наследовать классы эффектов, как это?
Детали:
- Угловой CLI: 1.7.1
- Узел: 8.9.4
- ОС: win32 x64
Angular: 5.2.7 ... анимации, общие, компилятор, compiler-cli, core, forms ... language-service, platform-browser, platform-browser-динамический ... маршрутизатор
@ angular / cdk: 5.2.5
- @ angular / cli: 1.7.1
- @ angular/ материал: 5.2.5
- @ angular-devkit / build-optimizer: 0.3.2
- @ angular-devkit / core: 0.3.2
- @ angular-devkit/ схема: 0.3.2
- @ ngtools / json-схема: 1.2.0
- @ ngtools / webpack: 1.10.1
- @ схема / угловая: 0.3.2
- @ schematics / package-update: 0.3.2
- машинопись: 2.6.2
- webpack: 3.11.0
- ngrx: 5.2.0
- @ nrwl / nx: 1.0.3
Спасибо,
TTE