Angular / Лаборатория

Опыт 01 · Signals · Учебная заметка

Сигнал и производное значение

Меняем исходное состояние и наблюдаем, какие данные пересчитываются.

Сигнал и производное значение

Записываем исходные данные

Сигнал можно прочитать вызовом функции. У изменяемого сигнала есть методы set и update. Например, список задач хранится в одном сигнале, а обработчик отметки создаёт следующую версию списка через update.

Производное — отдельное вычисление

Если на экране нужно показать только выполненные задачи, используйте computed. У выражения одна задача: прочитать текущий список и вернуть отфильтрованное значение. Не храните копию результата в другом изменяемом сигнале.

Проверьте, от чего зависит результат

Добавьте режим «Показывать все» и прочитайте соответствующий сигнал в computed. Теперь итог зависит и от списка, и от выбранного режима. Важно читать актуальные значения внутри вычисления, а не захватить результат заранее.

Пример для разбора

const tasks = signal([{ id: 1, title: "Разобрать пример", done: false }]);
const completed = computed(() => tasks().filter(task => task.done));
const markDone = (id: number) => tasks.update(items =>
  items.map(task => task.id === id ? { ...task, done: true } : task)
);
Теперь ваша очередь

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

Первоисточник: официальная документация по теме ↗