Denis Konyshev

Frontend developer

Профессиональная разработка сайтов:
веб-приложений, корпоративных порталов, интернет-магазинов,
лендингов.

Angular/Signals: новый подход к реактивности

Дата: 30.05.2025
Angular/Signals: новый подход к реактивности

Angular Signals представляет собой новую концепцию реактивности в фреймворке Angular, представленную компанией Google в 2023 году. Эта концепция призвана упростить разработку приложений и сделать её более эффективной благодаря использованию сигнальных значений и подписок на изменения этих сигналов.

В традиционных подходах Angular мы часто сталкиваемся с необходимостью использования сложных механизмов отслеживания изменений, таких как change detection strategy и ngOnChanges. Однако с появлением Angular Signals эта проблема решается элегантнее и проще. Теперь разработчики могут работать непосредственно с сигналами, которые автоматически обновляют представление приложения при изменении данных.

Что такое сигналы?

Сигнал — это особый тип переменной, которая инкапсулирует значение и позволяет наблюдать его изменения. Когда изменяется значение сигнала, все зависимые компоненты и директивы получают уведомление об этом изменении и соответствующим образом обновляются. Такой подход значительно упрощает управление состоянием приложения и делает код более читаемым и поддерживаемым.

Как работают сигналы?

Сигналы в Angular реализованы на основе концепции reactive programming. Они позволяют создавать цепочку зависимых вычислений, где изменение одного значения приводит к автоматическому перерасчету всех последующих значений. Например, если у вас есть компонент, отображающий список пользователей, и этот список хранится в сигнале, то любое обновление списка автоматически приведет к перерисовке компонента.

Преимущества сигналов

Использование сигналов дает множество преимуществ:

Простота: Сигналы делают работу с данными интуитивно понятной и простой.
Производительность: Благодаря механизму lazy evaluation, сигналы снижают нагрузку на систему и повышают производительность.
Поддержка иммутабельности: Сигналы поощряют использование неизменяемых объектов, что улучшает стабильность кода.
Чистота архитектуры: Использование сигналов помогает поддерживать чистоту архитектуры приложения, делая её модульной и расширяемой.

Примеры использования

Рассмотрим пример простого компонента, использующего сигналы:

import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-root',
  template: `
    <h1>{{ user().name }} </h1>
    <button (click)="updateUser()">Update User</button>
  `,
})
export class AppComponent {
  private _user = signal({ name: 'John Doe' });

  public updateUser(): void {
    this._user.set({ name: 'Jane Doe' });
  }
}

Здесь мы создаем сигнал _user, хранящий объект с именем пользователя. При нажатии кнопки запускается метод updateUser, который меняет имя пользователя. Компонент автоматически реагирует на изменение сигнала и обновляет представление.

Заключение

Angular Signals — это мощный инструмент, который существенно облегчает жизнь разработчика, улучшая производительность и удобство разработки приложений. Он является важным шагом вперед в эволюции Angular и демонстрирует стремление команды Google сделать платформу ещё лучше и удобнее для разработчиков.