169 похожих чатов

Всем привет! Дано: NgRx state, штук 100 компонентов. Из них

где-то 50 подписываются на одни и те же селекторы NgRx store.

Задача: избавиться от дублирования кода. Зачем по сто раз подписываться на одно и то же, если можно создать хотя бы видимость соблюдения приципов Бритвы Оккама, DRY, KISS, OBAMA и AMOGUS?

Возможные решения:

1. Есть смысл сделать абстрактный компонент-родитель, который подписывается на некоторые селекторы из NgRx store? Все дочерние компоненты автоматом получают готовые поля классов в виде Observable. Круто, конечно!

2. Или, само собой, лучше как-то сделать это через DI, чтобы в каждый компонент инжектились данные селектора? Дело в том, что я не очень хорошо умею писать DI. Где копать по теме шаринга селекторов NgRx через DI?

19 ответов

14 просмотров

фасад сервис

обама и амогус это прикол или правда такие есть?

Kenya-West-️ Автор вопроса
Smooth Operator
фасад сервис

Он уже есть у меня, называется CommunicationService. Но параллельно начал использоваться NgRx, я понял его концепт, и мне он показался удобнее и гибче. Не хочу иметь две сущности - фасад и NgRx store для одной и той же задачи.

Kenya-West-️ Автор вопроса
Kenya-West ️
screenshot Он уже есть у меня, называется CommunicationServic...

Получается, я меняю шило на мыло, и мне в любой случае в каждом компоненте надо будет писать что-то типа: foo$ = this.store.select(selectFoo); bar$ = this.store.select(selectBar); по 50 раз во всех компонентах? Как-то не очень, мне кажется. Или это норм?

Kenya-West-️ Автор вопроса
Smooth Operator
обама и амогус это прикол или правда такие есть?

Вообще, это прикол. Но не факт, что на Медиуме нет статьи с таким акронимом, и ваши сомнения это подтверждают...

Kenya-West ️
Получается, я меняю шило на мыло, и мне в любой сл...

По моему норм :) если много селекторов можно один комбинированный сделать

Kenya-West-️ Автор вопроса
Sergei Sergeevich
По моему норм :) если много селекторов можно один ...

Да-а-а-а, наверное, так и сделаю тогда уж...

Kenya-West ️
screenshot Он уже есть у меня, называется CommunicationServic...

не используй стор в компоненте, не имей один общий сервис, не имей папку сервисы

Антон
почему плохо иметь папку сервисы?

потому что они между собой не связаны одной идеей, папка-помойка

Smooth Operator
потому что они между собой не связаны одной идеей,...

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

Антон
получение информации с Бэка

это не идея а техническая деталь

Smooth Operator
это не идея а техническая деталь

это как пример, туда можно еще отнести хранение внутреннего состояния

Антон
@vb_201

Если у тебя сервис юзается только в определенном модуле или компоненте, то зачем выносить его в shared ?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта