
Angular 7.0.0 版本已发布!这是一个跨越整个平台的主要版本,包括核心框架、Angular Material 和具有同步主要版本的 CLI。此版本包含我们工具链的新功能,并已启用多个主要合作伙伴的发布。
请访问update.angular.io以获取有关更新应用程序的详细信息和指南,但由于我们在 v6 中所做的工作,更新到 v7 应该是大多数开发人员的一个命令:
ng update @angular/cli @angular/core
v7 的早期采用者报告说,这次更新比以往任何时候都快,许多应用程序更新时间不到 10 分钟。
现在,CLI 将在运行ng new
或ng add @angular/material
等常用命令时提示用户,以帮助您发现路由或 SCSS 支持等内置功能。
CLI 提示已添加到Schematics中,因此任何发布 Schematics 的包都可以通过向 Schematics 集合添加x-prompt
键来利用它们。
// schematic.json
"routing": {
"type": "boolean",
"description": "Generates a routing module.",
"default": false,
"x-prompt": "Would you like to add Angular routing?"
},
我们继续关注性能,分析了整个生态系统中的常见错误。我们发现许多开发人员都包括reflect-metadata
生产中的 polyfill,仅在开发中需要。
为了解决这个问题,v7 的部分更新将自动从您的polyfills.ts
文件中删除它,然后在 JIT 模式下构建应用程序时将其作为构建步骤包含在内,默认情况下从生产构建中删除此 polyfill。
对于 v7,我们还默认新项目可以利用 CLI 中的捆绑预算。当初始捆绑包超过 2MB 时,新应用程序将发出警告,超过 5MB 时将出错。这些预算很容易在angular.json.
// angular.json
"budgets": [{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}]
这些预算与可以向利用 Chrome数据保护程序功能的用户显示的警告保持一致。
Material Design 在 2018 年进行了重大更新。更新到 v7 的 Angular Material 用户应该会看到细微的视觉差异,反映出 Material Design 规范的更新。
新添加到 CDK 中,您现在可以通过导入DragDropModule
或ScrollingModule
来利用虚拟滚动和拖放。
虚拟滚动根据列表的可见部分从 DOM 加载和卸载元素,从而可以为具有非常大的可滚动列表的用户构建非常快速的体验。
// dragdrop.html
<cdk-virtual-scroll-viewport itemSize="50" class="example-viewport">
<div *cdkVirtualFor="let item of items" class="example-item">{{item}}</div>
</cdk-virtual-scroll-viewport>
CDK 中现已提供拖放支持,包括用户移动项目时的自动渲染以及用于重新排序列表 ( moveItemInArray
) 和在列表之间传输项目 ( transferArrayItem
) 的帮助器方法。
// dragdrop.html
<div cdkDropList class="list" (cdkDropListDropped)="drop($event)">
<div class="box" *ngFor="let movie of movies" cdkDrag>{{movie}}</div>
</div>
// dragdrop.ts
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.movies, event.previousIndex, event.currentIndex);
}
通过在mat-form-field
内部使用本机select
元素来提高应用程序的可访问性。本机选择具有一些性能、可访问性和可用性优势,但我们保留了mat-select
,它可以完全控制选项的呈现。
了解有关mat-select
和mat-form-field
的更多信息
Angular Elements 现在支持使用自定义元素的 Web 标准进行内容投影。
<my-custom-element>This content can be projected!</my-custom-element>
Angular 的成功在很大程度上要归功于社区,为此,我们一直在与最近启动的几个社区项目合作。
我们一直在努力改进我们的指南和参考材料。 angular.io 上的文档现在包含Angular CLI 的参考材料。
我们更新了对主要第三方项目的依赖关系。
我们一直在继续致力于一项名为 Ivy 的新计划——我们的下一代渲染管道。 Ivy 目前正在积极开发中,不属于 v7 版本的一部分。我们开始验证与现有应用程序的向后兼容性,并将在未来几个月内准备就绪后立即宣布选择加入 Ivy 预览版。