У меня есть угловая структура проекта, как показано ниже:
/(root or repo folder)
|_ projects
|_ mylib (this is the main library that will be exported from the repo)
|_ sample-app (created to consume 'mylib ' project to test that things work fine when 'mylib' would be consumed in other projects)
Для обработки состояния приложения я использую ngRx (из которых у меня есть только базовые знания). Проект настроен с Angular8.2.5, ngRx 8.3.0 и RxJs 6.5.3.
При выполнении npm start
в репо, sample-app
проект загружается, а mylib
проект загружается лениво.
Вот как я инициализировал магазин приложений / состояние
В sample-app/app.module.ts
(внутри sample-app
проекта)
StoreModule.forRoot({}, {
runtimeChecks: {
strictStateImmutability: true,
strictActionImmutability: true,
strictStateSerializability: true,
strictActionSerializability: true,
},
}),
!environment.production ? StoreDevtoolsModule.instrument({ name: 'My Sample App' }) : [],
В mylib/mylib.module.ts
(внутри mylib
project)
import { libReducer} from './shared/store/lib.store';
StoreModule.forFeature('libState', libReducer)
libReducer
экспортируется из mylib/shared/store/lib.store.ts
файла
export interface subFeatureOneState {
// some properties defined here
}
export interface LibState {
subFeatureOneReducer: subFeatureOneState;
}
export const libReducer: ActionReducerMap<LibState> = {
subFeatureOneReducer,
};
Единственная проблема, с которой я сталкиваюсь при этой настройке, заключается в том, что при попытке получить ошибкупостроить свой проект (используя ng build
).
Ошибка говорит:
Проверка журналов не дает особой помощилибо.
Проблема сборки будет решена, если я изменю StoreModule.forFeature
определение в mylib.module.ts
на
StoreModule.forFeature('libState', subFeatureOneReducer)
, но это не то, чего я хочу, поскольку я намерен сохранить все свои редукторыв одном месте и только одна ссылка StoreModule.forFeature
внутри mylib
проекта.
Я не смог найти много статей в Интернете, которые объясняют использование ActionReducerMap
для функционального модуля хранить. Я придерживался подхода, упомянутого ниже, но он не решил проблему сбоя сборки: @ ngrx / store объединяет несколько редукторов из функционального модуля
Что-то не так с тем способом, который я настроилхранить / редукторы для инициализации? Было бы здорово, если бы я мог получить какие-либо указатели на это, чтобы решить проблему с ошибкой сборки.