Очистка ресурсов через DestroyRef.onDestroy()
DestroyRef предоставляет метод
Зарегистрированная функция выполняется при уничтожении компонента. Такой подход помогает избежать утечек памяти и использовать лаконичную форму очистки.
👉 @sWebDev
DestroyRef предоставляет метод
onDestroy()
, с помощью которого можно зарегистрировать функцию, выполняемую при уничтожении экземпляра. Данный способ подходит для отписки от Observable, остановки таймера или удаления обработчика событий без реализации интерфейса OnDestroy
.import { Component, inject, DestroyRef } from '@angular/core';
import { interval, Subscription } from 'rxjs';
@Component({
selector: 'demo-ticker',
template: `<p>{{ tick }}</p>`,
})
export class TickerComponent {
tick = 0;
private sub: Subscription;
constructor() {
const destroyRef = inject(DestroyRef);
this.sub = interval(1000).subscribe(v => (this.tick = v));
destroyRef.onDestroy(() => {
this.sub.unsubscribe();
console.log('Подписка завершена');
});
}
}
Зарегистрированная функция выполняется при уничтожении компонента. Такой подход помогает избежать утечек памяти и использовать лаконичную форму очистки.
👉 @sWebDev
Yall.js
Yall.js — легковесная библиотека для ленивой загрузки изображений и видео с использованием Intersection Observer. Работает без зависимостей и подходит для оптимизации скорости загрузки страниц в проектах с большим количеством медиа.
👉 @sWebDev
Yall.js — легковесная библиотека для ленивой загрузки изображений и видео с использованием Intersection Observer. Работает без зависимостей и подходит для оптимизации скорости загрузки страниц в проектах с большим количеством медиа.
👉 @sWebDev
Гексагональная архитектура с NgRx Signal Store в Angular
Статья объясняет, как использовать гексагональную архитектуру при работе с NgRx Signal Store и Angular Signals. Данный подход позволяет изолировать бизнес-логику от инфраструктурных деталей, повысить модульность и упростить тестирование.
👉 @sWebDev
Статья объясняет, как использовать гексагональную архитектуру при работе с NgRx Signal Store и Angular Signals. Данный подход позволяет изолировать бизнес-логику от инфраструктурных деталей, повысить модульность и упростить тестирование.
👉 @sWebDev
This media is not supported in your browser
VIEW IN TELEGRAM
Interactive 3D Birthday Cake Celebration
Интерактивная анимация открытки с тортом на Three.js.
👉 @sWebDev
Интерактивная анимация открытки с тортом на Three.js.
👉 @sWebDev
AutoComplete.js
AutoComplete.js — JavaScript-библиотека для создания быстрого и адаптивного автозаполнения. Поддерживает динамические и статические источники данных, кастомизацию шаблонов и событий. Подойдёт для форм, поисковых строк и интерфейсов с предсказанием ввода.
👉 @sWebDev
AutoComplete.js — JavaScript-библиотека для создания быстрого и адаптивного автозаполнения. Поддерживает динамические и статические источники данных, кастомизацию шаблонов и событий. Подойдёт для форм, поисковых строк и интерфейсов с предсказанием ввода.
👉 @sWebDev
Работа с хуком unstable_useCacheRefresh
Что позволяет сделать хук
Забыли? Вернитесь к посту от12.05.2025 .
👉 @sWebDev
Что позволяет сделать хук
unstable_useCacheRefresh(
)?Забыли? Вернитесь к посту от
👉 @sWebDev
Что позволяет сделать хук unstable_useCacheRefresh()?
Anonymous Quiz
10%
Удалить компонент из DOM.
14%
Переинициализировать хранилище состояния.
3%
Изменить дерево маршрутизации.
72%
Сбросить и перезапросить кэшированные данные.
Получение шаблонов через ContentChildren и TemplateRef
Параметр
В примере компонент получает все
👉 @sWebDev
Параметр
read: TemplateRef
в декораторе ContentChildren
позволяет получить доступ именно к шаблонам, переданным в компонент через <ng-content>
, что важно, когда требуется отрисовать вложенные ng-template
вручную, а не просто вставить контент. Angular по умолчанию ищет компоненты, но при указании read
можно получить доступ к объектам TemplateRef
.import { Component, ContentChildren, QueryList, TemplateRef, AfterContentInit } from '@angular/core';
@Component({
selector: 'template-container',
template: `<ng-container *ngTemplateOutlet="templates[0]"></ng-container>`,
})
export class TemplateContainerComponent implements AfterContentInit {
@ContentChildren(TemplateRef, { read: TemplateRef }) templates!: QueryList<TemplateRef<any>>;
ngAfterContentInit() {
console.log('Шаблонов передано:', this.templates.length);
}
}
В примере компонент получает все
ng-template
, переданные в него, и может использовать любой шаблон вручную.👉 @sWebDev
Чувствуете ли вы, что ваш реальный уровень веб-разработки полностью соответствует вашей текущей должности?
👍 – Да, мое внутреннее ощущение совпадает с должностью.
❤️ – Чувствую, что мой реальный уровень ниже, чем моя должность.
🤔 – Чувствую, что мой реальный уровень выше, чем моя должность.
👉 @sWebDev | #юмор
👍 – Да, мое внутреннее ощущение совпадает с должностью.
❤️ – Чувствую, что мой реальный уровень ниже, чем моя должность.
🤔 – Чувствую, что мой реальный уровень выше, чем моя должность.
👉 @sWebDev | #юмор
Cuttr.js
Cuttr.js — JavaScript-библиотека для обрезки текста с добавлением многоточия. Позволяет ограничивать вывод по количеству строк или символов. Подойдёт для карточек, превью и адаптивных блоков с переменной длиной контента.
👉 @sWebDev
Cuttr.js — JavaScript-библиотека для обрезки текста с добавлением многоточия. Позволяет ограничивать вывод по количеству строк или символов. Подойдёт для карточек, превью и адаптивных блоков с переменной длиной контента.
👉 @sWebDev
Современное E2E-тестирование Angular-приложений с помощью Playwright
Unit-тесты проверяют логику, но не отражают, как работает всё приложение целиком. Когда проект растёт, а релизы выходят всё чаще, важно видеть поведение интерфейса глазами пользователя. В статье рассказывается, как использовать Playwright для написания сквозных тестов в Angular и почему этот инструмент помогает выпускать обновления быстрее и увереннее.
👉 @sWebDev
Unit-тесты проверяют логику, но не отражают, как работает всё приложение целиком. Когда проект растёт, а релизы выходят всё чаще, важно видеть поведение интерфейса глазами пользователя. В статье рассказывается, как использовать Playwright для написания сквозных тестов в Angular и почему этот инструмент помогает выпускать обновления быстрее и увереннее.
👉 @sWebDev
Jump.js
Jump.js — библиотека для плавной прокрутки к элементам на странице. Работает без зависимостей, поддерживает настройку отступов и колбэки. Подойдёт для лендингов, навигации по якорям и одностраничных интерфейсов.
👉 @sWebDev
Jump.js — библиотека для плавной прокрутки к элементам на странице. Работает без зависимостей, поддерживает настройку отступов и колбэки. Подойдёт для лендингов, навигации по якорям и одностраничных интерфейсов.
👉 @sWebDev