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。迁移时可以保留现有模块结构,再按需要逐步混用两种组织方式。
建议的升级步骤
- 按 Angular 的升级流程逐个主版本运行
ng update,处理每一步报告的迁移和依赖兼容问题。 - 检查模块
declarations中的组件、指令和管道。需要由模块声明的项目应设置standalone: false。 - 运行项目构建,检查模板、依赖注入和路由相关错误,再逐步处理具体兼容问题。
是否需要调整,也取决于项目使用的第三方库是否兼容 Angular 21。仅凭问题描述,无法判断这些依赖是否都兼容。Angular NgModules 指南
备注:内容仅供参考。
