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

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

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

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

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

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

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

19 ответов

17 просмотров

фасад сервис

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

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 ?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта