Проект библиотеки угловых компонентов с NGRX?

Я использовал NGRX для нескольких проектов сейчас, и в целом мне это нравится. Но я борюсь с тем, стоит ли использовать его в моем следующем проекте, который будет заключаться в создании угловой библиотеки компонентов.

Рекомендуется ли использовать ngrx в типах проектов угловой библиотеки? Как бы вы настроили корневое состояние против состояния функции? Будет ли основной модуль моего библиотечного проекта подключаться к корневому хранилищу ngrx? Если так, то если моя библиотека используется в родительском приложении, которое также использует ngrx, столкнется ли корневое хранилище?

Обновление (больше контекста):

Большинство компонентов в библиотеке будут типичными формами данных типа материала. Например, предоставление компонентов для поиска, обновления, создания и удаления объектов в нескольких приложениях. Мы упаковываем их как библиотеку компонентов (и библиотеку угловых элементов), потому что их нужно будет использовать в нескольких веб-приложениях, пока эти веб-приложения не объединятся в одно новое супер-веб-приложение (сроки конвергенции - 1 год в будущем.). Другим путем интеграции, который мы рассматривали, была загрузка iframe во все эти клиентские приложения.

Сами компоненты будут подключаться к уровню API для выполнения всех операций ввода-вывода данных. Компонентам может потребоваться разделить части состояния между компонентами.

2 ответа

Это трудно ответить без полного контекста.

Если мы говорим о "чистой" библиотеке компонентов, я бы не стал использовать библиотеки управления состояниями. Если компоненту нужно какое-то состояние, он должен управлять своим состоянием самостоятельно.

Компоненты, использующие эту библиотеку, всегда могут контролировать связь с магазином.

Мне было поручено разработать большую библиотеку, содержащую множество связанных компонентов, и я решил использовать в ней ngrx.

Я предполагаю, что вы знакомы с ngrx и реализовали необходимые файлы для состояния (действия, редукторы, селекторы и т. д.).

вот мои шаги по использованию ngrx в библиотеке angular:

шаг 1: добавьте зависимости ngrx (хранилище, эффект, сущность и т. д.) в основной проект


шаг 2: добавьте зависимости ngrx (хранилище, эффект, сущность и т. д.) в проект библиотеки.

      "@ngrx/effects": "^16.1.0",
"@ngrx/entity": "^16.1.0",
"@ngrx/store": "^16.1.0",

примечание: обновите PeerDependency в библиотеке также

шаг 3: начальные модули ngrx в app.module.ts с методом forRoot

      StoreModule.forRoot({}),
EffectsModule.forRoot([]),

шаг 4: начальные модули ngrx в библиотечном модуле с методом forFeature

      StoreModule.forFeature(TEST_FEATURE_NAME,{testPage: testPageReducer}),
EffectsModule.forFeature([]), // no effects for now
Другие вопросы по тегам