Ответ 1
Вам не нужна редукция, но вам нужен способ поддержания состояния. Служба будет работать, но в конце вы отправите что-то похожее на магазин redux или ngrx.
Рассмотрите проблему. У вас есть данные, поступающие асинхронно. Вы хотите, чтобы это было реактивным. Вы хотите иметь обработку ошибок. Вы хотите, чтобы состояния ожидания были обновлены. У вас есть каскадные сценарии, когда одно событие запускает несколько действий, каждый из которых имеет свои собственные задержки и пути ошибок.
И вы хотите настроить шаблон, который можно использовать в нескольких компонентах.
У Виктора Савкина есть способ сделать это с наблюдаемыми, которые очень скользкие. У Ngrx есть другой путь.
Я написал умеренно сложный компонент, используя службу. Все нормально. Часы исчезнут в отслеживании некоторых странных ситуаций, когда состояние было неопределенным и забросило ошибки. Я слишком сильно попадал в сорняки, чтобы иметь что-то многоразовое, как образец. И результат был хрупким и хрупким. Это не было полностью реактивным, и сделать это оказалось чрезвычайно сложным и трудоемким. Я портировал его на ngrx, и как только кривая обучения преодолена, что не является тривиальным, код стал проще и полностью инструментальным, позволяющим быстро отлаживать.
YMMV.
У Виктора Савкина есть статья о том, как поддерживать состояние