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

Общий вопрос. Имеется ли в сообществе Angular, более менее правильный

шаблонный проект? Со всей структурой

32 ответов

19 просмотров

providedIn: root, это создание сервиса на самом верхнем уровне, который доступен в любом месте приложения

Александр-Лактионов Автор вопроса
DreyLiky
providedIn: root, это создание сервиса на самом ве...

Это я знаю. Нужно ли заменить "root" на "LazyModule", если сервис используется только в этом модуле?

Александр Лактионов
screenshot Это я знаю. Нужно ли заменить "root" на "LazyModul...

Да, логично провайдить сервисы на уровне, на котором их нужно использовать) В данном случае в конкретном модуле/компоненте

Александр-Лактионов Автор вопроса
DreyLiky
Да, логично провайдить сервисы на уровне, на котор...

А если сервис используется более одного раза, то везде "root"?

Александр Лактионов
А если сервис используется более одного раза, то в...

Если, скажем, сервис используется на разных страницах, то: Или сделать его глобальным (providedIn: 'root'). Или провайдить в каждую страницу, чтобы создавались для них независимые инстансы. Зависит от задачи. Чаще всего, сервисы делаются рутовыми если их нужно переиспользовать на разных страницах. Но не без специфических ситуаций, в которых уже можно подумать в другую сторону=)

Александр-Лактионов Автор вопроса
DreyLiky
Если, скажем, сервис используется на разных страни...

Спасибо. Сейчас изменю все сервисы, которые используются в одном модуле с root на LazyModule.

Александр Лактионов
Спасибо. Сейчас изменю все сервисы, которые исполь...

Ну и с точки зрения файловой архитектуры, логично размещать такие сервисы в папке с самим модулем. А глобальные сервисы - на глобальном уровне=)

Александр-Лактионов Автор вопроса

Есть ли такой проект?

Александр-Лактионов Автор вопроса
DreyLiky
Ну и с точки зрения файловой архитектуры, логично ...

проще говоря с разным namespace. Это же нужно только, чтобы избежать путаницу в дальнейшем. Быстрее ничего не грузится и тд

Александр Лактионов
Есть ли такой проект?

Все делают всё по разному, нет общего стандарта. Это важно понимать) Я предпочитаю архитектуру с "бизнес сущностями". Когда у тебя есть features/user, features/product и т.д. И в этих сущностях находятся все их рутовые сервисы, глупые компоненты, интерфейсы, енамы и т.д. Есть архитектура микрофронтендов, как в Тинькофф, там всё делается иначе и не юзаются сущности. В каждом проекте любой компонент - всегда умный, кроме, разве-что тех, которые находятся в shared библиотеке. В общем, мне нечего показать в этом плане=) Нужно или искать и находить что ближе к душе или на опыте понимать что к чему, со временем.

Александр Лактионов
Спасибо)

Есть общие рекомендации, впитывая которые, ты приходишь к какому-то энивей уникальному решению, но с какими-то, как это принято говорить "best practices" =))

Александр Лактионов
Спасибо)

У меня есть проект,с папкой services, и прям все сервисы лежат там А есть проект где для каждого модуля свой сервис))) хрен знает)) смотря какой проект )))

Александр Лактионов
Спасибо)

Так же и с модал. Окнами, пример)) может в самом компоненте создашь модалку, или же в глобальную папку modalsи все там установить))

Александр-Лактионов Автор вопроса
DreyLiky
Есть общие рекомендации, впитывая которые, ты прих...

А если есть модуль "settingModule" и в нем есть "settingTestModule". "settingTestModule" имеет свой сервис "settingTestService", Тогда возникнет ошибка Invalid provider for the NgModule 'settingTestModule' - only instances of Provider and Type are allowed, got: [?undefined?]. И получается в этом случае объявлять "settingTestService", как "root"?

Александр-Лактионов Автор вопроса
Hey 👋, i'm Samvel 🦊
Эммм, в верхнем уровне, т.е. settingModule

Вот такая ситуация. Как правильно добавлять?

Александр Лактионов
screenshot Вот такая ситуация. Как правильно добавлять?

Я бы оставил в сервисе @Injectable() - пустой А в модуле, в его providers - добавил бы сам сервис. Как я понял, ты сейчас продублировал providers и там и там

Александр-Лактионов Автор вопроса
Hey 👋, i'm Samvel 🦊
Попробуй providedin SettingModule

Так работает,но циклическая зависимость

Александр Лактионов
screenshot Так работает,но циклическая зависимость

Оставь в сервисе @Injectable() декоратор пустым) Добавь сервис в providers модуля только

DreyLiky
Оставь в сервисе @Injectable() декоратор пустым) Д...

А разве это решит проблему circular dependency? Ну глобально говоря мой метод и твой, это одно и то же)

Александр Лактионов
общего модуля?SettingModule

Ну я так понял тебе сервис нужен не в SettingModule, а в SettingTestModule. Значит в него)

Александр-Лактионов Автор вопроса
Hey 👋, i'm Samvel 🦊
👍👍

я про циклическую зависимость

DreyLiky
Если, скажем, сервис используется на разных страни...

а вчем разница 'root': ConcreteModule vs providers: [ConcreteService]?

Rus
а вчем разница 'root': ConcreteModule vs provider...

Что значит: 'root': ConcreteModule ? Имеется ввиду: @Injectable({ providedIn: ConcreteModule }) ?

Rus
а вчем разница 'root': ConcreteModule vs provider...

Ну насколько мне известно - нет разницы. Просто мне не нравится идея писать: providedIn: Module. providedIn: 'root', 'platform' - ок, но не модуль/компонент. Причина: Ну, например providedIn: Component работает некорректно и этот функционал не предназначен для провайдинга в компонентах, хотя если добавить сервис в массив providers компонента - всё заебумба. По итогу, я считаю это странной историей, которая полезна лишь для провайдинга на высоких уровнях. Мое мнение субъективно в этом плане)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта