У меня есть два приложения в монорепозитории, одно будет бесплатным подмножеством другого, поэтому все функции бесплатного приложения включены в несвободное.
Я пытаюсь настроить свои эффекты так, чтобы существовал базовый класс эффекта, который реализует все общие эффекты, а затем расширяю его в несвободном проекте для добавления дополнительных эффектов. Это не работает. Оба приложения могут использовать основные эффекты до тех пор, пока это все эффекты, которые я определяю, но как только я добавляю больше эффектов в класс для несвободных, оно перестает распознавать основные эффекты.
Вот установка:
- 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 когда-либо отправляется. Ничего не изменилось, кроме добавления к классу not-free совершенно не относящегося к нему Эффекта. Бесплатное приложение продолжает работать, платное - нет. Если я удалю этот дополнительный эффект из not-free, он снова начнет распознавать основные эффекты.
Что мне не хватает? Можно ли унаследовать такие классы эффектов?
Подробности:
- Угловой интерфейс командной строки: 1.7.1
- Узел: 8.9.4
- ОС: win32 x64
Angular: 5.2.7 ... анимации, общие, компилятор, компилятор-cli, ядро, формы ... язык-сервис, платформа-браузер, платформа-браузер-динамический ... маршрутизатор
@ angular / cdk: 5.2.5
- @ angular / cli: 1.7.1
- @ угловой / материал: 5.2.5
- @ angular-devkit / оптимизатор сборки: 0.3.2
- @ angular-devkit / ядро: 0.3.2
- @ angular-devkit / схемы: 0.3.2
- @ ngtools / json-схема: 1.2.0
- @ ngtools / webpack: 1.10.1
- @ schematics / angular: 0.3.2
- @ schematics / обновление пакета: 0.3.2
- машинопись: 2.6.2
- веб-пакет: 3.11.0
- ngrx: 5.2.0
- @ nrwl / nx: 1.0.3
Спасибо,
TTE