The team behind Angular has released an update with Angular 8 Beta version 11, after the initial release of Angular 8 beta, a whole lot more features have been added such as Ivy and a new renderer.
Angular 8 beta version 11 also includes some bug fixes for Bazel, such a fix for schematic created projects that would not compile if the project contains a routing module.
Here’s what’s new in Angular 8 Beta version 11:
- Logging has been made more configurable in the compiler-cli, with CLI usage and integrations such as webpack plug-ins to filter excessive log messages.
- An AbstractType<T> interface will match classes whether they are abstract or concrete. Casting as AbstractType<MyConcrete> will return a type that is not newable. This type will be used to match abstract classes in the get() functions of Injector and TestBed.
- An update schematic called “template-var-assignment” is introduced to analyze template files to warn developers if template variables are assigned to values. The schematic comes with a driver for TSLint.
- For service-worker, multiple apps can be supported on different subpaths of a domain. Until now, the service-worker has cached data of multiple apps in cache DB files in a different domain. This has made apps break when switching from one app to another in the same domain. The new capability solves this issue.
- Support for TypeScript 3.3. Support for TypeScript 3.1 and TypeScript 3.2 will be dropped.
- The addition of a command-line flag to expose Bazel build files on disk.
- Modification of Bazel to copy the workspace and bazel files to the project root directory before invoking Bazel.
- Removal of components from a FormaArray. This provides a convenience. Previously, FormArray had to be looped, removing each component until empty.
- Providing external tooling the ability for async providers to finish resolving before the document is serialized.
- An update schematic for the @angular/core package to migrate to the explicit query timing syntax. This affects ViewChild and ContentChild query resolution. While not yet required, queries with Ivy will be dynamic by default. So, specifying an explicit query timing ensures that developers can migrate smoothly to Ivy, once Ivy is the default renderer.
- A JSON schema for service worker configuration.
- For Bazel, ts_config has been added to extend support for the ng_module. This also is a step toward enabling the importing of material2 as a Bazel dependency.
- For the router, a hash-based navigation option has been added to setUpLocationSync. With this change, developers now can pass an option to setUpLocationSync to ensure that location changes run in hash-based apps.
- In the Angular core, users now can define timing of ViewChild/ContentChild queries. Previously, an inconsistency in resolution timing could cause confusion and code depending on a query result could stop working.
- In the compiler, support has been added for tokenizing a subset of an input string and tokenizing escape strings.
- The compiler-cli no longer supports external symbols by default.
- With SASS backing for Bazel, rules are added to the workspace for a project requiring the SASS extension to CSS. With SASS, developers can write visual styles for a website in a more advanced language that is compiled to CSS.
- A performance improvement for smaller images that uses pngcrsh, an optimizer that makes images smaller for all PNG files.
- createinjector() is removed from the pubic API. Createinjector() is an API for the planned Ivy renderer, which is due in a beta form later this year. Plans call for re-exporting the API when Ivy is released
- Consistency of typeof checks, in which the sequence of strictly not equal to null followed by typeof value == ‘object’ is used when testing whether value is an object. This is being done because there is no point to using double equal with null because undefined is ruled out by the typeof check. The improvement also would avoid an unnecessary ToBoolean check.
- The TypeScript compiler transformer, ngtsc, is exposed as a plug-in, enabling wiring of ngtsc into an existing TypeScript compilation binary.
- For the compiler-cli, generated SASS/Less (Leaner Style Sheets) files are resolved to .css inputs.
- For forms, a control and descendant controls can be marked as touched.
- Also for Bazel, a bug fix has been implemented in which the node memory limit for ng-module has been increased to prevent out-of-memory issues with large modules. When memory is not released correctly or a process continues to use more and more of it, process failure can result.
- To improve performance for @angular/platform-server, Angular 8.0 uses a shared DomElementSchemaRegistry instance. This addresses a problem in which ServerRendererFactory2 creates a new instance of DomElementSchemaRegistry for every request, which is very costly. Reusing a single instance avoids overhead per request.
- Also for forms, Angular 8.0 exports NumberValueAccessor and RangeValueAccessor directives.
Currently, the most stable production release is Angular 7.2. And Angular 8 is expected to move to a release candidate by this month and production release by around May or June this year.
You can download Angular 8 beta version 11 from Github here.