Open RYAZHAPOVILNUR opened 1 year ago
Можно даже переиспользовать тот же самый State который уже написан Создать класс GlobalState который будет наследоваться от State, указать ему providedIn: 'root'
Сделать возможность добавлять глобальный стейт через модуль
И сделать функцию provideGlobalState чтобы можно было провайдить в новом ангуляре без модулей
Создать функцию injectGlobalStore по которой можно в сервисе получить глобальный стор, затем где нужно инжектить его с помощью этой функции и работать так же как с локальным стором, ни при том что он будет один глобальный на все приложение
Если такое реализовать то решение будет полноценным настолько чо можно будет его юзать на маленьких и средних проектах
Тогда кейсы использования будет такой
Добавляем глобальный стор в модуль или bootstrap (для нового ангуляра) Инжектим глобальный стор где хотим в сервисах и вызываем его методы
Создаем локальные сторы в компонентах, у каждого локального стора будет поле globalStore в котором будут лежать readonly данные из глобального стора
При этом все что может сделать локальный стор это кинуть сообщение в глобальный стор, и, опционально, коллбек
Сервисы напрямую работают с глобальным стором через методы select, update, effect и тд При этом глобальный стор под капотом слушает все сообщения от локальных сторо, и на разные типы сообщений вызывает свои же методы
Склоняюсь я к тому что неплохо использовать typescript декораторы, раз уж в ангуляре все ими пропитано
Можно придумать такое решение чтобы каждый локальный стор сразу же знал о глобальном, если такой вообще есть в приложении, но чтобы он не мог самостоятельно менять глобальный стор, мог только читать и кидать в него события