(стрелка указывает вложенность). У меня есть функция, которая рендерит канвасы (пдфки). Эта функция находится в компоненте "С". Мне надо вызывать эту функцию при первой инициализации компонента, и в последующем при нажатии на кнопку увеличения в компоненте "A". Как я могу получить доступ к функции рендера в компоненте А? Надеюсь не запутал вас.
Через общий сервис
Вынести все в сервис
используй viewchild или как там и дергай методы ниже. наверное.
вот описание 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
Привет. Этот способ не подойдёт , так между ними ещё один компонент
сделай тоже самое в прослойке. a method b. b method c
Меня всегда немного смущал этот подход. Насколько это нормальная практика? Через несколько компонентов так прокидывать?
для меня этот подход очень легко читается и поддерживается
Понятно. Наверное так и сделаю, так как выносить в сервис этот метод будет довольно проблематично. Спасибо
в сервис не метод выносят а сабджект. и на него подписываются или дёргают
правда я не знаю ещё минусы этого подхода при вставке компонентов через ng-content или как там. у вас жёстко вставленны?
чет так се звучит
а как лучше и почему?
ну типа, если иерархия а-б-с, то почему первый раз триггерит при инициализации с?
ну и вообще, рулить методами чайлда через вьючайлд такое себе
В ней находится разметка Канваса
и? какое не какое себе?
либо сервисы. либо прокидывать по иерархии триггер, на который отработает метод чайлда
сервисы чем лучше viewchild?
Разделяемый компонент может быть Смарт компонентом ?
а чем хорошо дергать чайлда чайлда?
он должен быть смарт компонентом, т.к. отвечает за функциональность, которую будут использовать другие компоненты
тем что сервисы инжектишь только смарты, и все дамбы идут без зависимостей. это сильно упрощает читаемость кода и легче отслеживать провайды сервисов в модулях.
мы так не делаем. разделяемый тоже дамб.
Улучшает ли это юзабилити пользователей программы ?
ага. а потом возникнет соблазн не юзать контрол вэлью эксессор, и дернуть форму чайлда ) и прочая дичь
форму чайлда дёргать не надо. она может эмитить данные и свои статусы на верх. резетить её можно лобо через инпут либо через viewchild
Представляете в скольких местах программы нужно повторить Смарт функции ?
что такое смарт функция в вашем понимании?
а зачем родителю знать о методах чайлда чайлда? может быть родитель может сказать: хочу А, и другой компонент С увидит это требование через сервис или инпут? не надо нарушать нормальный поток событий
Функция самая обычная в Смарт компоненте которая выполняется в ответ на output от дамб компонента
или другими словами, вот у меня С, у него инпуты (или сервис) и я пониманию, что и где триггерит. и вот твой вариант. инпутов нет, наружу ничего не торчит, но методы отрабатывают. кто вызывает, где, как? магия
эти методы можно поместить в интерфейс и постамидь модификатор public что явно даёт понять что они нужны с наружи.
короче, не принял бы я твой PR. надо еще один вопрос к списку на собесы добавить 😁
Обсуждают сегодня