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

Всем привет! Есть компонент А, которому нужно иметь свою версию Сервиса

Х
Но все компоненты А должны шейрить один и тот же инстанс Сервиса Х между собой и ни с кем больше
Кто-нибудь знает какие-либо красивые решения для данной проблемы?

29 ответов

19 просмотров

звучит как обычный синглтон

🇺🇦Serhii- Автор вопроса
Evgheni Чернявский
звучит как обычный синглтон

У компонента B своя версия Сервиса Х, которая шейрится между всеми компонентами В

🇺🇦Serhii
У компонента B своя версия Сервиса Х, которая шейр...

Как вариант вижу разбить по модулям А и В, провайдить в них сервис Х и тогда все компоненты внутри модуля будут работать с этим сервисом. Только сервис не должен быть provide: root Вроде так

Дмитрий Могилевцев
Как вариант вижу разбить по модулям А и В, провайд...

вроде сервис может быть и provide: root, это не помешает ему также и запровайдится в описанные модули А и В, поправьте, если не прав

🇺🇦Serhii- Автор вопроса
🇺🇦Serhii- Автор вопроса
Дмитрий Могилевцев
Как вариант вижу разбить по модулям А и В, провайд...

Так можно, но компоненты являются частью одного модуля. Там много на этом заварухи. Поэтому и ищу красивое решение без изменения модульной структуры

🇺🇦Serhii
Так можно, но компоненты являются частью одного мо...

А чем плохо разбить на подмодули? Тем более кейс прям и просит этого)

🇺🇦Serhii
Так можно, но компоненты являются частью одного мо...

Ещё вариант, кажется, провайдить внутрь компонента, и тогда дочерние компоненты должны юзать этот инстанс сервиса

🇺🇦Serhii- Автор вопроса
Дмитрий Могилевцев
Ещё вариант, кажется, провайдить внутрь компонента...

С компонентом будет лучше, но придется подпиливать компонент под каждую универсальную зависимость или прокидывать класс через отдельный токен Подмодули плохи тем, что необходимо универсальное решение для любого компонента

🇺🇦Serhii
С компонентом будет лучше, но придется подпиливать...

Решение через модули - так себе. Если невозможно ограничить через injection иерархию, то можно сделать два разных injection token, которые будет provided in root, но каждый из них useClass того же сервиса. Потом компоненты А будет инджектить один токет, а Б - другой.

🇺🇦Serhii- Автор вопроса
Alex Okrushko
Решение через модули - так себе. Если невозможно о...

Здесь и беда с универсальным решением, что нужно сделать токен под каждый случай

🇺🇦Serhii- Автор вопроса
🇺🇦Serhii
Здесь и беда с универсальным решением, что нужно с...

Грубо говоря нужна Map<Component, Service>, вот и ищу красивое решение

Alex Okrushko
Решение через модули - так себе. Если невозможно о...

я вот сижу и думаю а решение через модули вообще будет работать? там же будет тупо race condition, кто успел того и тапки т.е это будет всегда один инстанс

🇺🇦Serhii- Автор вопроса
Alex Okrushko
Ну случая всего 2, да?

Нет, может вылезти и в 4, поэтому и ищу красивое решение

🇺🇦Serhii
Нет, может вылезти и в 4, поэтому и ищу красивое р...

А то чего завит какой из случаев использовать?

🇺🇦Serhii
Нет, может вылезти и в 4, поэтому и ищу красивое р...

я конечно не юзал сам но можно попробовать вот так: https://angular.io/api/core/InjectionToken#tree-shakable-injectiontoken т.е прям в файле где у вас компонент прям на месте токен создаете, внутри фабрику, и токен сразу в конструктор

Andrei
Будут новые инстансы

не должно, мы указываем providedIn: 'root' же

Evgheni Чернявский
не должно, мы указываем providedIn: 'root' же

Тут нужна фабрика с общим сервисом и weekmap. В нее передавать класс и смотреть если создан отдавать, а если нет новый делать. Что-то типа такого

Evgheni Чернявский
ээм нет это module injector

В декораторп компонента element injector

Andrei
В декораторп компонента element injector

где ты чел увидел что я предлагаю в декоратор компонента регать?

Andrei
Вот

ну 10 раз еще раз перечитайте, ссылку откройте, я хз где вы это видите

Andrei
Чего вы такой агрессивный?

и агрессивность хз где видите

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта