Constructor parameter with access modifier vs without access modifier w.r.t access throughout class
RxJs and DestroyRef Provider
RxJs Animated Tutorials
- thinkrx
- observeOn
- concatAll
- defaultIfEmpty
- scan
- javascript concat arrays without duplicates
DestroyRef Provider
- https://youtu.be/ga-MU1sb-Oo?si=ssCPUTNNIDeo4Eya
- https://youtu.be/dFO2Lb-fcBs?si=CHd4PU14SjC9yM-v
Что такое Blob
Что такое Intersection Observer API
Intersection Observer API
Itersection Observer API - это API браузера, позволяющий наблюдать за пересечениями элементов. Например, карточка оплаты на странице оплаты по мере прокрутки страницы пересекает верхнюю и/или нижнюю часть основного контента страницы. Данное API браузера позволяет отследить эти пересечения. В проекте для упрощения работы с ним используется пакет https://www.npmjs.com/package/@ng-web-apis/intersection-observer
Что требуется знать для работы с этой библиотекой
Использование IntersectionObserverAPI можно конфигурировать. Настраиваемые параметры:
- root - тот элемент, который будет отслеживаться браузером. Если не указан, по дефолту считается viewport’ом браузерного окна.
- rootMargin - смещение прямоугольника root-элемента. С помощью этого параметра можно сжать root-элемент. Дефолтное значение 0px 0px 0px 0px.
- thresholds - массив значений, при которых должны срабатывать callback-пересечения. Указывается в процентах (0.15 - 15%, .5 - 50%: означает, что при пересечении целевого элемента вверх или вниз от root-элемента при 15% или 50% будет срабатывать событие callback’а). Важно: событие происходит при примерном пересечении целевого элемента границ root-элемента.
При использовании провайдеров используются следующие токены
INTERSECTION_THRESHOLD
Использование:
INTERSECTION_ROOT_MARGIN
Использование:
IntersectionObserverService
Данный сервис унаследован Observable<IntersectionObserverEntry[]> и является основной единицей использования при отслеживании пересечения элементов:
Важно: если элемент при создании содержит высоту, равную 0px - следует оформлять подписку на entries$ в ngAfterViewInit.
Объект IntersectionObserverEntry поставляется из entries$ и имеет следующие свойства:
-
boundingClientRect - Возвращает прямоугольник границ таргет-элемента в виде. Границы вычисляются, как описано в документации для Element.getBoundingClientRect().
-
intersectionRatio - Возвращает отношение intersectionRect к boundingClientRect.
-
intersectionRect - Возвращает границы, представляющие видимую область таргет-элемента.
-
isIntersecting - Булево значение, которое является истинным, если таргет элемент пересекается с root-элементом. Если это значение истинно, то запись IntersectionObserverEntry описывает переход в состояние пересечения; если оно ложно, то переход происходит от пересечения к непересечению.
-
rootBounds - Возвращает границы для root - элемента.
-
target - Таргет - элемент.
-
time - Указывает время, в которое было зарегистрировано пересечение, относительно начала отсчета времени жизни IntersectionObserver.
Что такое Provider
Provider - это поставщик. То есть, его назначение и сфера применения - это поставка согласно заранее определенному контракту - настроек \ точек данных \ значений - для использования в определенном контексте. Где контекст - это последовательность \ область использования.
То есть Provider - это способ определить специфическое поведение в каком-то конкретном месте, без явного определения внутри каждого потребителя. Например, родительский компонент определяет для себя реализацию \ экземпляр провайдера, предоставляющий особое поведение или особый набор данных для этого компонента и его дочерних, отличный от поведения \ набора данных декларируемого для других модулей или приложения в целом.
Возвращаясь к примеру с сервисом доставки почты до почтового отделения, предположим, что ему нужно учитывать климатические зоны: обычная и крайней север.
Для этого нам понадобиться:
- Для всего приложения (основной зоны работы) опубликовать провайдер, возвращающий экземпляр сервиса, созданный со сроком хранения посылок - 3 дня
- Для компонента, работающего в зоне крайнего севера, опубликовать провайдер, возвращающий экземпляр сервиса, созданный со сроком хранения посылок - 90 дней
Провайдер - это коробочка, которая поставляет независимым компонентам какое-то поведение или данные без явного определения его внутри классов/компонентов, в которых он используется.