Skip to main content

Що таке signal в Angular?

signal в Angular - це новий реактивний примітив (починаючи з Angular 16), який зберігає значення і дозволяє автоматично відстежувати, хто це значення читає, і кого потрібно оновити при його зміні. Це альтернатива потокам (RxJS) у простих сценаріях і заміна @Input(), @Output(), BehaviorSubject та частини zone-based механіки.

Як виглядає

ts
import { signal } from '@angular/core'; const counter = signal(0); console.log(counter()); // читання значення counter.set(1); // встановити нове значення counter.update(v => v + 1); // змінити на основі попереднього

Як працює по суті

  • signal() створює сховище значення
  • читання - це виклик counter()
  • запис - set() або update()
  • Angular стежить, які вирази читають сигнал, і при зміні запускає оновлення пов'язаних шаблонів, ефектів або обчислюваних сигналів

Пов'язані сутності

  • computed() - обчислюване значення на основі інших сигналів
  • effect() - реакція на зміну сигналів (наприклад логування або виклик методу)

Де зазвичай застосовують

  • стан компонента без RxJS
  • зберігання UI-станів (фільтри, прапорці, лічильники)
  • проста реактивність у шаблоні без підписок і async pipe

Головна відмінність від RxJS

SignalsRxJS
Pull-модельPush-модель
Стан - одне значенняПотоки подій
Мінімум підписокПідписки обов'язкові
Просто для локального стануСкладні асинхронні сценарії, обробка подій

Підсумок: signal - це новий механізм реактивного стану в Angular, який спрощує і робить декларативною реактивність усередині компонентів. RxJS при цьому залишається для складних потоків і асинхронної логіки.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.