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

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

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

32 ответов

7 просмотров

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 компонента - всё заебумба. По итогу, я считаю это странной историей, которая полезна лишь для провайдинга на высоких уровнях. Мое мнение субъективно в этом плане)

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта