Обзор на библиотеки
Angular: NGXS

В библиотеке NGXS реализуется принцип работы Redux для Angular приложений.

Архитектура выглядит следующим образом:
Экшены (Action) одновременно выполняют роль и редьюсеров (Reducer), и эффектов (Effects), взаимодействуют сами с API-сервисами (Service), с бэкендами (Backends), а селекторы (Selector) являются частью самого стора (Store).


Для NGXS надо создать файл с экшенами и создать файл стейта, где законфигурировать все наше состояние. Пример кода:
Экшены и стейт оформляются в виде классов.

Класс Action должен содержать статическое строковое поле Type.


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


Конфигурация стейта, селекторы и хэндлеры экшенов задаются через декораторы. Начальную конфигурацию задаем в декораторе State, Селекторы также обозначаем декоратором Selector, в декоратор Action передаем наш экшен.


Выглядит привычнее для angular-разработчика, а сервис и компонент при этом остаются такими же чистыми, нет никаких сайд-эффектов для получения списка todo, в компоненте мы также вызываем на сторе диспатч экшена, т.е. вызываем загрузку todo.
  • проще для понимания

  • для начала работы потребуется намного меньше времени, чем в случае с NGRX

  • сервисы получения данных её компонентов также остаются чистыми

  • функционал библиотеки может расширяться с помощью готовых или собственноручно написанных плагинов
Минусы

  • нет удобного инструмента для работы с коллекциями (есть, но развивается энтузиастами в отдельном пакете)

  • потеря типов

  • бойлерплейты (вынуждены писать однотипные экшены).
Обзоры других библиотек и финальное сравнение
ищите здесь:

Библиотека NgRx
Библиотека Akita

Что лучше выбрать для работы с Angular —
NGRX, NGXS или Akita?