PAYATHON 2026

Angular 17 升级到 Angular 21 后还能继续使用 NgModule 吗?

数据小许

结论

可以。Angular 21 仍支持 NgModule,现有应用可以继续用它组织组件、指令、管道和依赖注入。Angular 建议新代码优先采用 standalone,但现有项目不必因此迁移。Angular NgModules 指南

升级时需要留意什么

从 Angular 19 起,组件、指令和管道默认采用 standalone。若要继续在 NgModule 的 declarations 中声明它们,需要显式设置 standalone: false。升级依赖默认值的 Angular 17 旧组件时,应检查迁移结果,确认所属模块仍能声明这些组件。Angular 组件指南 Angular v19 迁移说明

例如:

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

@Component({
  selector: 'app-example',
  standalone: false,
  template: '<p>Example works</p>',
})
export class ExampleComponent {}

@NgModule({
  declarations: [ExampleComponent],
  exports: [ExampleComponent],
})
export class ExampleModule {}

NgModule 可以导入 standalone 组件、指令和管道,standalone 组件也可以导入 NgModule。迁移时可以保留现有模块结构,再按需要逐步混用两种组织方式。

建议的升级步骤

  1. 按 Angular 的升级流程逐个主版本运行 ng update,处理每一步报告的迁移和依赖兼容问题。
  2. 检查模块 declarations 中的组件、指令和管道。需要由模块声明的项目应设置 standalone: false。
  3. 运行项目构建,检查模板、依赖注入和路由相关错误,再逐步处理具体兼容问题。

是否需要调整,也取决于项目使用的第三方库是否兼容 Angular 21。仅凭问题描述,无法判断这些依赖是否都兼容。Angular NgModules 指南

备注:内容仅供参考。