компонента в дочерний? Например, я хотел бы использовать тот же сервис который внедрил в родительском компоненте в дочерний, чтобы не внедрять опять тот же сервис?
Текущая ситуация в том что, я внедряю одинаковые сервисы и в родительский, и в дочерний компонент. Насколько это правильно?
если это работает так как вам нужно то это правильно если это работает не так как вам нужно то это не правильно
EventEmitter
внедрять сервис через @Input?
мы внедряем сервисы только в первый родительский - smart компонент. все что ниже общаются через input\output, как вариант. Вот почитай https://github.com/evoytenkoapps/angular-best-practices#%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0
через @Input можно передавать объект этого сервиса
ну нет, для таких вещей точно инжект
Определяем сервис в модуле общем для родителя и дочки, и через инжект подключаем сервис в родителя и дочку. Это будет один и тот же инстанс сервиса.
А зачем Вам это? Что за сервис там?) Обычные input/output не подойдёт для коммуникации?
Я еще не пробыввал через Input/Output. Просто в дочерним элементе и так уже много @Input. Хотелось бы другое решение
А как сделать общим сервис для родителя и дочки?
А что за компонент такой? Может разделить его? Или объединить в объект поля, если там конфиг какой, например Если будет и инпут и сервис- будет странно)
Определить его в общем модуле. Я же выше написал )
Ну там дочерний компонент, где надо общаться с базой и соответственно нуден сервис
почитайте про то как работает DI в Angular
+ или можно создать common модуль где будут общие сервисы для любых модулей - плюс инжект, если прям и стейт хранить то плюс ngrx - хотя на первых порах с монорепозиторием на сабджах я обходился выше крыши
smart Он не использует Input\Output это реально? у меня есть кастомный селект, запрашивающий список с сервера, в Input приходит параметр, какой список нужно запрашивать. Как это делать на умных/тупых?
список с сервера должен запрашивать не компонент а сервис - и вбрасывать его например через async в компонент
ну это такое себе, иы должены запрашивать с сервера данные в компоненте который выше по иерархии, а этот компонент, одожен его только отрисовывать
сервис и запрашивает
в сервисе сделай геттер который возвращает observable и без всяких инпутов заинжекти в конструктор сервис - спокойно во вьюху вставь метод через async пайп
Вот накидал пример реализации как у нас https://github.com/evoytenkoapps/angular-best-practices/tree/master/examples/src/app/components/smart-dumb-concept
Для этого нужно указать сервис в провайдерах компонента родителя. И тогда тот же интстанс сервиса будет доступен всем компонентам потомкам. Спасибо DI. А про сервисы в инпутах первый раз слышу, что за ересь
Обсуждают сегодня