Angular 13的新内容
基于TypeScript的网络框架的下一个主要版本的开发正在进行中。
Angular 13是谷歌流行的基于TypeScript的网络框架的计划升级版,它正在继续成形,截至9月24日,已经发布了8个测试版,影响到了路由器、核心和服务工作者等领域。
这些代码可以在GitHub上找到。在自第二个测试版以来的主要变化中,当一个新的导航取消了正在进行的导航时,路由器不再替换浏览器的URL。这导致了URL的闪烁,并且只用于支持一些AngularJS混合应用。依靠navigationId 到路由器的混合应用程序应该订阅NavigationCancel 事件,并自己进行location.replaceState ,以便将navigationId 到路由器状态。
在最近的Angular 13测试版的其他地方:
RouterTestingModule所使用的SpyLocation的行为已经被改变,以匹配浏览器的行为。- 对于核心部分,正在为静态属性初始化器添加纯注释。带有初始化器的类属性会导致代码的执行,在模块评估时有副作用,效果类似于模块级代码。因此,优化器不能安全地删除具有这种静态属性的类,因为潜在的副作用可能影响应用程序的执行。为了允许具有这些类型的静态属性的类被优化并在未使用时被删除,静态属性的初始化表达式可以被注释为纯的。
- 服务工作者的缓存在安全工作者中被清除,以确保在未来的请求中不提供陈旧或破碎的内容。
- 对于平台-浏览器,对于缺少动画触发器的错误信息进行了改进。
前两个测试版引入了表单和路由器的变化。
对于表单,Angular 13首次推出了一个新的类型,FormControlStatus ,它是表单控件所有可能的状态字符串的联合。另外,AbstractControl.status 已经从string 缩小到FormControlStatus ,StatusChanges 已经从Observable<any> 缩小到Observable<FormControlStatus> 。根据Angular的更新日志,大多数应用程序应该可以无缝地使用这些新类型。
对于路由器,已经提出了一个变化,以解决默认的URL序列化器会放弃后面的一切,包括查询参数中的问号,导致对导航/path?q=hello?&other=123 的不正确解析的情况。这个变化提供了正确的解析。
Angular的生产版本是每六个月发布一次,这意味着第13版将在11月发布。前期的Angular 12版本在5月12日发布。
为Angular 13提议的其他变化包括:
- 对于编译器接口,已经提出了一个修复方案,以便对d.ts文件中的绝对导入使用正确的模块解析环境。
- 另外,对于编译器-li来说,在增量构建时,对于没有Angular行为的文件将跳过分析。在增量构建中,编译器会尽可能多地重复使用之前编译的分析数据,以避免再次进行分析工作。然而,对于没有Angular行为的源文件,没有分析数据会被记录下来,其结果是每次编译都要重新分析源文件,即使没有任何变化。这次提交避免了对此类源文件的分析。
- 对于语言服务,将为模板中的自动完成字符串字面联合类型提供支持。
- 对于路由器,缺失的出口事件将被添加到
RouterOutletContract。当组件在未来的某个时间点通过模块联盟动态呈现时,这将是必要的。