更新到 Angular 版本 9
Updating to Angular version 9
本指南包含关于更新到下一个 Angular 版本所需的全部知识。
This guide contains everything you need to know about updating to the next Angular version.
更新 CLI 应用
Updating CLI Apps
有关如何更新到最新 Angular 版本的分步说明(并利用我们的自动迁移工具进行更新),请使用 update.angular.io 上的交互式更新指南。
For step-by-step instructions on how to update to the latest Angular release (and leverage our automated migration tools to do so), use the interactive update guide at update.angular.io.
如果您对 CLI 正在运行的某些迁移工作感到好奇,参见“自动迁移”部分以了解关于要更改哪些代码以及更改原因的详细信息。
If you're curious about the specific migrations being run by the CLI, see the automated migrations section for details on what code is changing and why.
版本 9 中的更改和弃用
Changes and Deprecations in Version 9
有关 Angular 弃用和移除实践的信息,参见 Angular 的发布实践 。
For information about Angular's deprecation and removal practices, see Angular Release Practices.
新的重大变化
New Breaking Changes
Angular 现在默认使用 Ivy 进行编译。参见 Ivy 兼容性部分 。
Angular now compiles with Ivy by default. See the Ivy compatibility section.
CLI 应用程序默认情况下以 AOT 模式编译(包括模板类型检查)。以前仅使用 JIT 构建的用户可能会看到新的类型错误。有关更多信息和调试提示,请参见我们的模板类型检查指南 。
CLI apps compile in AOT mode by default (which includes template type-checking). Users who only built with JIT before may see new type errors. See our template type-checking guide for more information and debugging tips.
不再支持 TypeScript 3.4 和 3.5。请更新至 Typescript 3.7。
Typescript 3.4 and 3.5 are no longer supported. Please update to Typescript 3.7.
tslib
现在被列为对等(peer)依赖,而不是直接依赖。如果不使用 CLI,则必须手动安装tslib
,使用yarn add tslib
或npm install tslib --save
。tslib
is now listed as a peer dependency rather than a direct dependency. If you are not using the CLI, you must manually installtslib
, usingyarn add tslib
ornpm install tslib --save
.
新的弃用
New Deprecations
API | 替代品 Replacement | 备注 Notes |
---|---|---|
entryComponents | 无 none | See |
CurrencyPipe - DEFAULT_CURRENCY_CODE | {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'} | 从 v11 开始,默认代码将从由 From v11 the default code will be extracted from the locale data given by |
ANALYZE_FOR_ENTRY_COMPONENTS | 无 none | |
不带泛型的
| 带泛型的
| |
使用 Angular 特性的不带装饰器的基类 Undecorated base classes that use Angular features | 具有 Angular 特性的带 Base classes with | 请参见不带装饰器的基类部分 |
|
| 参见 See |
TestBed.get | TestBed.inject | 行为相同,但类型安全。 Same behavior, but type safe. |
新删除的已弃用 API
New Removals of Deprecated APIs
包 Package | API | 替代品 Replacement | 备注 Notes | |
---|---|---|---|---|
@angular/core | Renderer | Renderer2 | ||
@angular/core | RootRenderer | RendererFactory2 | 无 none | |
@angular/core | RenderComponentType | RendererType2 | 无 none | |
@angular/core | WtfScopeFn | 无 none | v8 | 参见 Web 跟踪框架 |
@angular/core | wtfCreateScope | 无 none | v8 | 参见 Web 跟踪框架 |
@angular/core | wtfStartTimeRange | 无 none | v8 | 参见 Web 跟踪框架 |
@angular/core | wtfEndTimeRange | 无 none | v8 | 参见 Web 跟踪框架 |
@angular/core | wtfLeave | 无 none | v8 | 参见 Web 跟踪框架 |
@angular/common | DeprecatedI18NPipesModule | CommonModule | 无 none | |
@angular/common | DeprecatedCurrencyPipe | CurrencyPipe | 无 none | |
@angular/common | DeprecatedDatePipe | DatePipe | 无 none | |
@angular/common | DeprecatedDecimalPipe | DecimalPipe | 无 none | |
@angular/common | DeprecatedPercentPipe | PercentPipe | 无 none | |
@angular/forms | NgFormSelectorWarning | 无 none | ||
@angular/forms |
|
| 无 none | |
@angular/service-worker | versionedFiles | files | 在 Service Worker 配置文件 In the service worker configuration file |
Ivy 的特性与兼容性
Ivy features and compatibility
在版本 9 中,Angular Ivy 是默认渲染引擎。如果您还没有听说过 Ivy,则可以在 Angular Ivy 指南中阅读有关它的更多信息。
In Version 9, Angular Ivy is the default rendering engine. If you haven't heard of Ivy, you can read more about it in the Angular Ivy guide.
除其他功能外,Ivy 在模板中引入了更全面的类型检查。有关详细信息,请参见模板类型检查 。
Among other features, Ivy introduces more comprehensive type-checking within templates. For details, see Template Type-checking.
关于调试的一般性指南以及与 Ivy 相关的较小更改的列表,请参见 Ivy 兼容性指南 。
For general guidance on debugging and a list of minor changes associated with Ivy, see the Ivy compatibility guide.
版本 9 的自动迁移
Automated Migrations for Version 9
了解 CLI 自动为您处理的迁移:
Read about the migrations the CLI handles for you automatically: