Проверяет понимание современной архитектуры Angular (standalone-компоненты) и умение обосновать, когда NgModule всё ещё уместен.
До Angular 14 любой компонент обязан был принадлежать NgModule, который декларировал его, импортировал зависимости и экспортировал наружу. Это создавало много шаблонного кода и усложняло понимание графа зависимостей. Начиная с Angular 14 появились standalone-компоненты, а с Angular 15–17 они стали рекомендуемым подходом по умолчанию. Теперь компонент, директива или пайп могут сами объявлять свои зависимости через imports, а приложение бутстрапится функцией bootstrapApplication без AppModule.
// main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { provideRouter } from '@angular/router';
import { AppComponent } from './app.component';
import { routes } from './app.routes';
bootstrapApplication(AppComponent, {
providers: [provideRouter(routes)]
});
// app.routes.ts
export const routes = [
{ path: 'home', loadComponent: () => import('./home.component').then(m => m.HomeComponent) },
{ path: 'admin', loadChildren: () => import('./admin.routes').then(m => m.adminRoutes) }
];
Если библиотека требует NgModule, его можно импортировать прямо в standalone-компонент через imports: [SomeLegacyModule]. То есть полный отказ не означает, что модули исчезают из проекта — они остаются как совместимый слой.
Итог: в новых проектах на Angular 17+ стоит по умолчанию использовать standalone-подход, а NgModule подключать точечно для legacy-библиотек, группировки провайдеров и динамической загрузки. Это даёт чистую архитектуру без потери совместимости.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию