#4 Angular dependency injection framework. Иерархия инъекторов. Hierarchical injectors
ฝัง
- เผยแพร่เมื่อ 15 ต.ค. 2024
- Hierarchical injectors в Ангулар имеет сложную запутанную систему provide зависимостей. В этом видео я сделал полный обзор этой темы. Полученные знания позволят строить гибкие архитектурные решения. Умение работать с DI открывает возможности по пониманию различных подходов в Angular
Возможно видео не зайдет с первого раза, добавь в закладки чтобы вернуться к материалу после небольшого отдыха :)
Презентация docs.google.co...
Я безумно рада, что нашла Ваш канал. Это то, чего мне так не хватало! Спасибо за труд
После реакта сложно, но круто! Спасибо огромное за курсы!
Приветствую друзья!
Я не тратил времени на просьбу поставить лайк и подписаться, по этому оставлю это в комментариях 🐶
Пишите, что еще хотели бы видеть у меня на канале?
Хорошего настроения 😎😸✌️
крутые примеры, понятное объяснение, спасибо
Да, после опыта вся эта теория совсем по-другому укладывается внутри) Было бы здорово еще разбивку по минутам сделать.
Спасибо, отличный материал.
Хорошо что оставил ссылку на сайт с emoji :)
🤯🤯🤯
Важное уточнение к ролику! на 4:10 минуте в emoji находится павлин, а не пеликан
После того, как навешиваю директиву appMonkey на child компонент, у меня результат такой:
Главный питомец - попугай
Трудный питомец - попугай
Любимый питомец - обезьяна
Трудный питомец - обезьяна
UPD:
В видео ошибка на 19:00 - если добавить директиву на узел app-child, то результат будет как я писал выше, если же повесить директиву на узел app-grand-child, то как раз и будет
Главный питомец - попугай
Трудный питомец - обезьяна
Любимый питомец - кенгуру
Трудный питомец - кенгуру
Т.к. директива использует хост инжектор, то как раз мы и увидим во второй строке обезьяну, при этом в последние 2 строки по прежнему будет провайдится вью инжектор со значением "кенгуру".
PS2: Подозреваю, что ошибка из-за презентации, т.к. если бы писалось и объяснялось "на лету", то это было бы видно сразу, а по итогу перепутались слайды.
Не соглашусь. В видео показано поведение при viewProviders в app-child. Ваш кейс описывает ситуацию, когда в app-child используется массив providers.
лайфхак для смайликов (emoji) в windows 10 можно использовать win+. (клавиша win одновременно с точкой), можно после этого продолжать печатать английские названия смайлов и они будут фильтроваться.
это чтобы набирать смайлики. ✌ без всяких левых сайтов.
Круто :) обязательно попробую. Если бы еще для убунту были такие штуки 😅
В пути поиска элемента, Injector возвращается в первый эелемент для того, чтобы определить какому модулю пренадлежит компонент. После чего начинается поиск по модулям (от модуля компонента и до root модуля).
Не совсем точно
В пути сначала идет поиск по дереву компонентов, viewProviders -> providers до корневого компонента
После этого в ближайший ленивый модуль, и так до корневого модуля
Потом платформа и ошибка если не найдено
Если ленивых модулей нет, то это одна конфигурация и поиск по модулям не происходит, а сразу происходит обращение к инжектору корневого модуля
@@grommaks Спасибо, буду знать)
Интересно, а можно было бы так переопределить компонент или директиву на свою кастомную. Типа подключили модуль МатериалДизинг компонентов, но в нем нам нужно поменять одну директиву. И мы конечно можем её отнаследовать и с другим селектором задекларировать и юзать такую. Но я говорю, было бы иногда удобно просто через родительский модуль подменить директиву в дочернем модуле. С сервисами мы так можем, почему с директивами-пайпами-компонентами не можем, это же плюс гибкость.
В курсе по Пайпам ангулар я переопределяю пайпу даты и модифицирую ее
Переопределять уже готовые директивы и компоненты можно, нужно указать такой же селектор и задекларировать в конце
@@grommaks ок, спасибо. Но это больше похоже на хак и баг-юзание, чем на фичу. Завтра в коде ангулар проведут оптимизации и способ перестанет работать
При изменении порядка директив на host ничего не изменилось, показывается тот декоратор, который объявлен последним в NgModule, а не тот который указан последним на host
Да, при повторном тестировании обнаружил что я ошибся тут
@@grommaks спасибо за ответ, боялась может я что-то не то сделала
@@grommaks и спасибо за отличный материал и подачу
@@ОльгаЖурова-и5й может с обновлением версии angular что-то изменилось, урок я снимал на 9 версии, а сейчас уже 14
Но скорее всего ошибся :)
Не пеликан а павлин)))
Блииин 🙀 вот это я ошибся 😂
я даже не заметил))
Я тоже заметил этот баг, но не мог вспомнить название "павлин"))
тяжело сображается
с очерёдностью не всё так однозначно...
код:
результат:
Grand-child = 🐈
Child = 🐈
Grand-child = 🐈
да, на этот подход не стоит рассчитывать при разработке...в новых версиях и с eslint у меня тоже не работает описанный в видео подход
тут лучше сразу избегать неопреденностей такого рода, чтобы не получать баги
Очередность зависит от очередности загрузки в модуле!
23:23 Penguin [ˈpeŋɡwɪn]
если кому интересно))