Angular 22.1.6 — исправления Router, DI, компилятора и SSR

9 сентября 2026 года вышло стабильное обновление Angular 22.1.6, относящееся к ветке 22.1. Этот релиз направлен на исправление пяти ошибок в компиляторе, диагностике шаблонов, системе внедрения зависимостей, серверной платформе и работе Router. В то же время Angular 22.2.0-next.7, выпущенный одновременно, не включает новых пользовательских изменений.

Angular 22.1.6
Angular 22.1.6

Angular 22.1.6 получил пять точечных исправлений

Angular 22.1.6 не меняет публичную модель разработки приложения и не добавляет крупных API: официальный changelog перечисляет пять исправлений. Обновление особенно заметно для проектов с компонентными CSS-переменными, сложными @for-шаблонами, embedded views, пользовательской RouteReuseStrategy и серверным рендерингом.

КомпонентЧто исправленоПрактический эффект
CompilerNamespacing для объявлений CSS @propertyЗарегистрированные custom properties корректно работают с механизмом изоляции CSS-переменных
Compiler CLIУбрано ложное срабатывание проверки NG8115Callable-объекты без параметров можно использовать как значения track без ошибочного предупреждения
CoreИсправлено применение SkipSelf в embedded viewsПоиск зависимостей больше не пропускает лишние уровни дерева инжекторов
Platform ServerИсправлено повреждение sourcemap при подстановке пути DominoКарты исходников серверных сборок формируются корректнее
RouterСохранена изоляция контекстов отсоединённых деревьев маршрутовВложенные маршруты корректнее восстанавливаются после повторного подключения сохранённого route subtree

В changelog для 22.1.6 не заявлены breaking changes или новые требования к миграции. Это патч-релиз, ориентированный на исправление поведения существующих механизмов.

Компилятор корректнее обрабатывает CSS @property

Angular 22.1.6 исправляет namespacing пользовательских CSS-переменных, объявленных через @property. Эта конструкция CSS позволяет зарегистрировать custom property, определить её синтаксис, наследование и начальное значение.

Angular уже умеет добавлять пространство имён к локальным CSS-переменным компонентов. Проблема заключалась в том, что регистрация через @property не учитывалась тем же механизмом. В результате имя зарегистрированной переменной и имя, которое Angular преобразовывал внутри var(...), могли расходиться.

После обновления компилятор обрабатывает такую регистрацию вместе с обычными обращениями к custom properties:

@property --accent-color {
    syntax: "<color>";
    inherits: true;
    initial-value: rebeccapurple;
}

.card {
    color: var(--accent-color);
}

Для разработчиков, активно использующих современный CSS внутри компонентных стилей, это устраняет потенциально трудно диагностируемое расхождение между объявлением переменной и её использованием.

Диагностика @for больше не считает callable-объекты ошибкой

Compiler CLI в Angular 22.1.6 уточняет проверку NG8115, связанную с выражением track в блоках @for. Ранее callable-объект мог быть принят за функцию, которую разработчик забыл вызвать.

Проблема проявлялась, например, с сигналами, FieldTree и пользовательскими объектами, которые технически имеют call signature, но используются для отслеживания по идентичности объекта. Проверка видела callable-тип и могла предложить добавить вызов функции, хотя исходный код был корректным.

Теперь диагностическое сообщение формируется только в тех случаях, когда выражение действительно похоже на функцию или метод, ожидающий параметры. Callable-объекты с нулём параметров, используемые как значения track, больше не должны получать ложное предупреждение.

SkipSelf исправлен для embedded views

Изменение в Angular Core затрагивает внедрение зависимостей в embedded views. В 22.1.6 модификатор SkipSelf применяется только к начальному узлу поиска зависимости, а не продолжает влиять на последующее прохождение дерева инжекторов.

Для обычных компонентов это исправление может остаться незаметным. Практическое значение выше в сложных шаблонных структурах, где используются вложенные представления, структурные конструкции и собственные иерархии providers.

Исправление снижает риск ситуации, когда Angular пропускает подходящий provider выше по дереву из-за некорректно распространённой семантики SkipSelf.

Router корректнее восстанавливает сохранённые деревья маршрутов

Одно из наиболее практичных исправлений Angular 22.1.6 относится к RouteReuseStrategy. При отсоединении маршрута Angular сохраняет компонент и связанные с ним дочерние RouterOutlet, чтобы затем повторно использовать уже созданное дерево.

Ранее во время detach дочерние контексты могли очищаться таким образом, что после повторного подключения внутренний outlet и Router фактически работали с разными деревьями контекстов. В сложной вложенной маршрутизации это приводило к ситуации, когда дочерний маршрут после восстановления сохранённого экрана больше не отображался.

Теперь контексты отсоединённого route subtree сохраняются отдельно, а для последующих активаций создаётся новый набор дочерних контекстов. Это особенно актуально для интерфейсов с вкладками, списками, вложенными страницами редактирования и пользовательской стратегией повторного использования маршрутов.

SSR получил исправление sourcemap для Domino

В @angular/platform-server устранена проблема, при которой внутреннее преобразование пути к Domino могло повредить .map-файлы серверной сборки. Причиной было слишком широкое регулярное выражение, применявшееся при замене относительного пути к bundled-версии Domino.

Поскольку операция выполнялась и над сериализованными sourcemap-файлами, выражение могло захватывать больше текста, чем требовалось, включая части sources и sourcesContent. В Angular 22.1.6 шаблон замены сделан более строгим.

Для конечного приложения это прежде всего улучшает отладку SSR-кода: корректная карта исходников повышает вероятность получить нормальную привязку ошибки к исходному TypeScript-коду вместо искажённого или бесполезного stack trace.

Angular 22.2.0-next.7 — без пользовательских изменений

Одновременно с 22.1.6 в npm появилась prerelease-ветка Angular 22.2.0-next.7. Согласно официальному changelog prerelease, непосредственно next.7 не содержит user-facing changes.

При этом выпущенный в тот же день 22.2.0-next.6, который входит в историю этой ветки, содержит ряд более заметных экспериментальных изменений:

  • программные API для ErrorBoundary;
  • поддержку @boundary в Language Service;
  • возможность получать Injector через view- и content-query;
  • новые публичные router resources;
  • корректировки определения blocking state при загрузке router resources;
  • те же исправления DI, Router, компилятора и SSR, которые вошли в стабильную 22.1.6.

Поэтому 22.2.0-next.7 стоит рассматривать не как отдельный функциональный релиз, а как текущую точку prerelease-ветки 22.2. Для production-проектов ориентиром остаётся стабильная версия 22.1.6.

Стоит ли обновляться до версии 22.1.6

Обновление Angular с версии 22.1 до 22.1.6 для проектов не требует значительных изменений, так как в changelog отсутствуют объявленные критические изменения. Наиболее высокий практический приоритет у команд, которые используют RouteReuseStrategy, SSR, сложную иерархию DI или новые возможности CSS custom properties.

Проверить обновление можно стандартным механизмом Angular CLI:

ng update @angular/core@22.1

После установки рекомендуется выполнить маршрутизационные и SSR-тесты, особенно если приложение применяет сохранение route subtree или серверный рендеринг.

Angular 22.2.0-next.7 предназначен прежде всего для тестирования будущей ветки 22.2. Разработчикам, которым нужны экспериментальные ErrorBoundary и router resources, имеет смысл проверять их в отдельном тестовом окружении, но переносить prerelease в production без конкретной необходимости не требуется.

При использовании материалов сайта необходимо указывать ссылку на TGLand.ru. Если вы копируете фрагменты текста в интернете, прямая гиперссылка, доступная для индексации поисковыми системами, должна быть размещена в начале материала.

Вам также может понравиться