Road to Angular 10: Angular 10.0.0-rc.2 fixes a bug and skips 10.0.0-rc.1

The final version of Angular 9 was released in February 2020, which means the road to Angular 10 has begun. We are keeping close tabs on the new releases. Angular 10.0.0-rc.2 has arrived with a single change, so let’s see what has happened and why v10.0.0-rc.1 has been skipped.
Updated 2, June 2020
The second release candidate for Angular 10 is now ready for download. After last week’s Angular 10.0.0-rc.0 comes Angular 10.0.0-rc.1, right? Usually that would be the case, but it’s 10.0.0-rc.2 due to an npm glitch with v10.0.0-rc.1.
Angular 10.0.0-rc.2 has a core bug fix on board that closes two issues:
Angular 10.0.0-rc.2
Bug Fixes
- core: reenable decorator downleveling for Angular npm packages (#37317) (d16a7f3), closes #37221 #37221
Note: the 10.0.0-rc.1 release on npm accidentally glitched-out midway, so we cut 10.0.0-rc.2 instead. oops :-)
- core: disable tsickle pass when producing APF packages (#37221) (a1001f2)
- elements: capture input properties set before upgrading the element (#36114) (2fc5ae5), closes #30848 #31416
- elements: correctly handle getting/setting properties before connecting the element (#36114) (327980b), closes /github.com/angular/angular/pull/31416/files#r300326698
- elements: do not break when the constructor of an Angular Element is not called (#36114) (89b44d1)
- ngcc: identifier ModuleWithProviders functions in IIFE wrapped classes (#37206) (97e1399), closes #37189
- core: Angular npm packages no longer contain jsdoc comments to support Closure Compiler’s advanced optimizations
- compiler-cli: compute the correct target output for
$localize
messages (#36989) (4e1b5e4) - core: Host classes should not be fed back into
@Input
(#35889) (cda2530), closes #35383 - core: inheritance delegate ctor regex updated to work on minified code (#36962) (ea971f7)
- language-service: use empty statement as parent of type node (#36989) (a32cbed)
- ngcc:
viaModule
should benull
for local imports (#36989) (d268d2a) - ngcc: ensure reflection hosts can handle TS 3.9 IIFE wrapped classes (#36989) (d7440c4)
- ngcc: ensure rendering formatters work with IIFE wrapped classes (#36989) (c8ee390)
- ngcc: support
defineProperty()
re-exports in CommonJS and UMD (#36989) (91092f6) - remove support for TypeScript 3.8 (#37129) (6466fb2)
- platform-server: use absolute URLs from Location for HTTP (#37071) (9edea0b)
- TypeScript 3.8 is no longer supported, please update to TypeScript 3.9.
- core: correct “development mode” console message (#36571) (8d8e419), closes #36570
- add aikidave as reviewer for DOCS: Marketing (#37014) (286fbf4)
- compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
- language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)
- core make generic mandatory for ModuleWithProviders (#36892) (20cc3ab)
- core: make generic mandatory for ModuleWithProviders

Angular Architecture Workshop: Strategic Design with Nx and Micro Frontends
by Manfred Steyer (SOFTWAREarchitekt.at)
Updated 25, May 2020
New changes to Angular have been made with the release of Angular 10.0.0-rc.0. In particular, a new breaking change should be noted by its users. With this version, Angular npm packages no longer contain jsdoc comments to support Closure Compiler’s advanced optimizations. This is due to changes introduced by TypeScript 3.9, making Closure unusable with the JS emit.
According to the changelog, if you are using Closure Compiler with Angular, from now on you should consume Angular packages directly fro the source instead of the ones published on npm.
A support thread for those affected by this change is available here.
Angular 10.0.0-rc.0
Bug Fixes
BREAKING CHANGES
Updated 19 May, 2020
The Angular team has released Angular 10.0.0-next.8, and this version drops TypeScript 3.8 support. As a breaking change, this means users must now upgrade to TypeScript 3.9, released earlier this month. Other updates in v10.0.0-next.8 include nine bug fixes and the added platform-server feature to use absolute URLs from Location for HTTP, which is not a breaking change.
Meanwhile, the confusion around the previous update has been cleared up, as the changelog now only lists one Angular 10.0.0-next.7 release that comes with the new core feature “make generic mandatory for ModuleWithProviders.” It has also been clarified that this is a breaking change and the changelog explains how to use a workaround. So, just scroll down and see the details for the two latest Angular releases on the road to v10.
Angular 10.0.0-next.8
Bug Fixes
Features
BREAKING CHANGES
Angular 10.0.0-next.7
Bug Fixes
Features
BREAKING CHANGES
A generic type parameter has always been required for the ModuleWithProviders
pattern to work with Ivy, but prior to this commit, View Engine allowed the generic type to be omitted (though support was officially deprecated). If you’re using ModuleWithProviders
without a generic type in your application code, a v10 migration will update your code for you.
However, if you are using View Engine and also depending on a library that omits the generic type, you will now get a build time error similar to:
error TS2314: Generic type 'ModuleWithProviders<T>' requires 1 type argument(s).
In this case, ngcc won’t help you (because it’s Ivy-only) and the migration only covers application code. You should contact the library author to fix their library to provide a type parameter when they use this class.
As a workaround, we suggest setting skipLibChecks
to false in your tsconfig or updating your app to use Ivy.
Updated 14 May, 2020
The latest Angular version on the road to v10 has landed—twice. The Angular changelog lists two versions of the current update, one with two bug fixes and two new features, the other with the same changes but an additional feature. Let’s wait and see if the Angular team will clarify which features have really made it into this release. Here are the four—or five—changes:
Angular 10.0.0-next.7
Bug Fixes
- core: correct “development mode” console message (#36571) (8d8e419), closes #36570
- add aikidave as reviewer for DOCS: Marketing (#37014) (286fbf4)
Features
- compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
- language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)
Angular 10.0.0-next.7
Bug Fixes
- core: correct “development mode” console message (#36571) (8d8e419), closes #36570
- add aikidave as reviewer for DOCS: Marketing (#37014) (286fbf4)
Features
- compiler: add name spans for property reads and method calls (#36826) (eb34aa5)
- language-service: [ivy] wrap ngtsc to handle typecheck files (#36930) (1142c37)
- core make generic mandatory for ModuleWithProviders (#36892) (20cc3ab)
Updated 8 May, 2020
Two Angular updates in one week: Angular 10.0.0-next.6 has arrived with an even longer list of changes, including breaking changes. New features have been added for the areas bazel, compiler-cli, core, ngcc, and language-service.
For example, in bazel, esm5 and fesm5 have been dropped, which should simplify ng_package. As a breaking change, this means the esm5 and fesm5 format is no longer distributed in Angular’s npm packages. Support for TypeScript 3.6 and 3.7 has been dropped, which marks another breaking change. Only the current version TypeScript 3.8 is now supported.
Other updates in this version include bug fixes and performance improvements.
See all the changes here:
Angular 10.0.0-next.6
Bug Fixes
- bazel: ng_package rule should update “package.json” of ts_library targets (#36944) (d5293d2)
- compiler: remove outdated and invalid warning for unresolved DI parameters (#36985) (d0280a0)
- compiler: switch to ‘referencedFiles’ for shim generation (#36211) (4213e8d)
- compiler-cli:
isCaseSensitive()
returns correct value (#36859) (fc4741f) - compiler-cli: don’t try to tag non-ts files as shims (#36987) (42d1091)
- compiler-cli: ensure
getRootDirs()
handles case-sensitivity (#36859) (3f3e9b7) - compiler-cli: ensure
MockFileSystem
handles case-sensitivity (#36859) (26eacd4) - compiler-cli: ensure LogicalFileSystem handles case-sensitivity (#36859) (53a8459)
- compiler-cli: fix bug tracking indirect NgModule dependencies (#36211) (bab90a7)
- compiler-cli: fix case-sensitivity issues in NgtscCompilerHost (#36859) (0ec0ff3)
- compiler-cli: normalize mock Windows file paths correctly (#36859) (b682bd1)
- compiler-cli: use CompilerHost to ensure canonical file paths (#36859) (a10c126)
- core: handle pluralize functions that expect a number (#36901) (2ff4b35), closes #36888
- core: properly get root nodes from embedded views with (#36051) (e30e132), closes #35967
- forms: handle numeric values properly in the validator (#36157) (88a235d), closes #35591
- forms: number input fires valueChanges twice (#36087) (97d6d90), closes #12540
- localize: ensure
getLocation()
works (#36853) (70b25a3) - ngcc: support ModuleWithProviders functions that delegate (#36948) (fafa50d), closes #36892
Features
- bazel: simplify ng_package by dropping esm5 and fesm5 (#36944) (9dbb30f)
- compiler-cli: report error if undecorated class with Angular features is discovered (#36921) (4c92cf4)
- core: undecorated-classes-with-decorated-fields migration should handle classes with lifecycle hooks (#36921) (c6ecdc9)
- ngcc: support for new APF where
module
points to esm2015 output (#36944) (c98a4d6) - language-service: [ivy] Parse Angular compiler options (#36922) (dbd0f8e)
- remove TypeScript 3.6 and 3.7 support (#36329) (fbd281c)
Performance Improvements
- compiler-cli: perform template type-checking incrementally (#36211) (ecffc35)
- compiler-cli: split Ivy template type-checking into multiple files (#36211) (b861e9c)
BREAKING CHANGES
- TypeScript versions 3.6 and 3.7 are no longer supported, please update to TypeScript 3.8
- forms: Number inputs no longer listen to the
change
event.
Tests which trigger change
events need to be updated to trigger input
events instead.
The change
event was in place to support IE9, as we found that input
events were not fired with backspace or cut actions. If you need to maintain IE9 support, you will need to add a change event listener to number inputs and call the onChange
method of NumberValueAccessor
manually.
Lastly, old versions of WebDriver would synthetically trigger the change
event on WebElement.clear
and WebElement.sendKeys
. If you are using an old version of WebDriver, you may need to update tests to ensure input
events are triggered. For example, you could use element.sendKeys(Keys.chord(Keys.CONTROL, "a"), Keys.BACK_SPACE);
in place of element.clear()
.
- forms: The
minLength
andmaxLength
validators now verify that the form control’s value has a numericlength
property, and only validate for length if that’s the case.
Previously, falsey values without the length property (such as 0
or false
values) were triggering validation errors. If your code relies on the old behavior, you can include other validators such as min or requiredTrue to the list of validators for a particular field.
- bazel: esm5 and fesm5 format is no longer distributed in Angular’s npm packages e.g. @angular/core
If you are not using Angular CLI to build your application or library, and you need to be able to build es5 artifacts, then you will need to downlevel the distributed Angular code to es5 on your own.
Angular CLI will automatically downlevel the code to es5 if differential loading is enabled in the Angular project, so no action is required from Angular CLI users.
Updated 6 May, 2020
The Angular team has been keeping up with regular weekly updates. This time there are several new features to try out and four breaking changes to watch out for. For example, a breaking change made to the core is that warnings about unknown elements will now be logged as errors. According to the Angular team, while this should not break the application, it “may trip up tools that expect nothing to be logged via console.error
.” Other breaking changes refer to router, service worker, and common.
Performance improvements regarding ngcc are on board as well: the getBasePaths()
computation should now go faster and basePaths in TargetedEntryPointFinder are now only computed when needed.
Here are all the changes in the current update:
Angular 10.0.0-next.5
Bug Fixes
- core: log error instead of warning for unknown properties and elements (#36399) (9d9d46f), closes #35699
- core: Refresh transplanted views at insertion point only (#35968) (1786586), closes #35400 #21324
- ngcc: do not run in parallel mode if there are less than 3 CPU cores (#36626) (4c63241)
- ngcc: give up re-spawning crashed worker process after 3 attempts (#36626) (793cb32)
- ngcc: handle
ENOMEM
errors in worker processes (#36626) (4779c4b) - ngcc: provide a unique exit code for timeouts (#36838) (d805526)
- ngcc: support recovering when a worker process crashes (#36626) (966598c), closes #36278
- ngcc: support TS 3.9 wrapped ES2015 classes (#36884) (db4c59d)
- router: cancel navigation when at least one resolver completes with no “next” emission (#24621) (d9c4840), closes #24195
Code Refactoring
Features
- localize: support merging multiple translation files (#36792) (72f534f)
- ngcc: allow async locking timeouts to be configured (#36838) (38f805c)
- ngcc: support marking an in-progress task as unprocessed (#36626) (4665c35)
- ngcc: support reverting a file written by
FileWriter
(#36626) (772ccf0) - service-worker: include
CacheQueryOptions
options in ngsw-config (#34663) (dc9f4b9), closes #28443 - service-worker: use
ignoreVary: true
when retrieving responses from cache (#34663) (ee35e22), closes #36638
Performance Improvements
- ngcc: only compute basePaths in TargetedEntryPointFinder when needed (#36881) (ec6b9cc), closes #36874
- ngcc: speed up the
getBasePaths()
computation (#36881) (e037840)
BREAKING CHANGES
- core: Warnings about unknown elements are now logged as errors. This won’t break your app, but it may trip up tools that expect nothing to be logged via
console.error
. - router: Any resolver which return EMPTY will cancel navigation. If you want to allow the navigation to continue, you will need to update the resolvers to emit some value, (i.e. defaultIfEmpty(…), of(…), etc).
- service-worker: Previously, Vary headers would be taken into account when retrieving resources from the cache, completely preventing the retrieval of cached assets (due to ServiceWorker implementation details) and leading to unpredictable behavior due to inconsistent/buggy implementations in different browsers.
Now, Vary
headers are ignored when retrieving resources from the ServiceWorker caches, which can result in resources being retrieved even when their headers are different. If your application needs to differentiate its responses based on request headers, please make sure the Angular ServiceWorker is configured to avoid caching the affected resources.
- common: This change could result in ExpressionChangedAfterItHasBeenChecked errors that were not detected before. The error could previously have gone undetected because two WrappedValues are considered “equal” in all cases for the purposes of the check, even if their respective unwrapped values are not.
Additionally, [val]=(observable | async).someProperty
will no longer trigger change detection if the value of someProperty
is identical to the value in the previous emit. If you need to force change detection, either update the binding to use an object whose reference changes or subscribe to the observable and call markForCheck as needed.
Updated 30 April, 2020
The latest update on the road to Angular 10 has arrived. Smaller than the last version, Angular 10.0.0-next.4 comes without breaking changes. It adds several bug fixes as well as a new router feature: matching the bevavior available to CanActivate
guards, a CanLoad
guard can now return UrlTree
.
These are the changes in v10.0.0-next.4:
Angular 10.0.0-next.4
Bug Fixes
- compiler: normalize line endings in ICU expansions (#36741) (70dd27f), closes #36725
- core: attempt to recover from user errors during creation (#36381) (3d82aa7), closes #31221
- core: handle synthetic props in Directive host bindings correctly (#35568) (f27deea), closes #35501
- language-service: disable update the
[@angular](https://github.com/angular)/core
module (#36783) (dd049ca) - localize: include legacy ids when describing messages (#36761) (47f9867)
- ngcc: recognize enum declarations emitted in JavaScript (#36550) (89c5890), closes #35584
Features
Updated 23 April, 2020
One week after the last Angular next version, it’s time for an update: Angular 10.0.0-next.3 has arrived. It comes with a breaking change regarding common: Previously, time periods that crossed midnight were not handled correctly, but this issue has now been addressed.
Here’s what else is new:
Angular 10.0.0-next.3
Bug Fixes
- common: format day-periods that cross midnight (#36611) (c6e5fc4), closes #36566
- compiler: avoid generating i18n attributes in plain form (#36422) (88b0985)
- core: do not use unbound attributes as inputs to structural directives (#36441) (acf6075)
- core: handle empty translations correctly (#36499) (b1f1d3f), closes #36476
- core: missing-injectable migration should not migrate
@NgModule
classes (#36369) (28995db), closes #35700 - core: pipes injecting viewProviders when used on a component host node (#36512) (81d23b3), closes #36146
- core: prevent unknown property check for AOT-compiled components (#36072) (4a9f0be), closes #35945
- core: properly identify modules affected by overrides in TestBed (#36649) (942b986), closes #36619
- language-service: properly evaluate types in comparable expressions (#36529) (8be0972)
- ngcc: display unlocker process output in sync mode (#36637) (cabf997), closes /github.com/nodejs/node/issues/3596#issuecomment-250890218
- ngcc: do not use cached file-system (#36687) (0c2ed4c), closes /github.com/angular/angular-cli/issues/16860#issuecomment-614694269
BREAKING CHANGES
- common: format day-periods that cross midnightWhen formatting a time with the
b
orB
format codes, the rendered string was not correctly handling day periods that spanned midnight. Instead the logic was falling back to the default case ofAM
.Now the logic has been updated so that it matches times that are within a day period that spans midnight, so it will now render the correct output, such asat night
in the case of English.Applications that are using eitherformatDate()
orDatePipe
and any of theb
orB
format codes will be affected by this change.
Updated 16 April, 2020
Angular development seems to be picking up speed once again: Angular 10.0.0-next.2 has now arrived. It focuses mainly on improving ngcc, which has received bug fixes as well as performance improvements. Other areas that have been addressed in this version include the compiler and the core.
This is what’s new in 10.0.0-next.2:
Angular 10.0.0-next.2
Bug Fixes
- common:
locales/global/*.js
are not ES5 compliant (#36342) (078b0be), closes angular/angular-cli#16394 - compiler: handle type references to namespaced symbols correctly (#36106) (4aa4e6f), closes #36006
- core: undecorated-classes-with-decorated-fields migration should avoid error if base class has no value declaration (#36543) (ca67748), closes #36522
- ngcc: correctly detect external files from nested
node_modules/
(#36559) (6ab43d7), closes #36526 - ngcc: display output from the unlocker process on Windows (#36569) (e041ac6)
- ngcc: do not spawn unlocker processes on cluster workers (#36569) (66effde), closes #35861
- ngcc: do not warn if
paths
mapping does not exist (#36525) (717df13), closes #36518 - ngcc: force ngcc to exit on error (#36622) (663b768), closes #36616
- router: pass correct component to canDeactivate checks when using two or more sibling router-outlets (#36302) (80e6c07), closes #34614
- upgrade: update $locationShim to handle Location changes before initialization (#36498) (0cc53fb), closes #36492
Performance Improvements
- ngcc: only load if it is needed (#36486) (3bedfda)
- ngcc: read dependencies from entry-point manifest (#36486) (a185efb), closes #issuecomment-608401834
- ngcc: reduce the size of the entry-point manifest file (#36486) (ec0ce60)
Updated 15 April, 2020
The updates for Angular keep coming, albeit at a slightly slower pace than before. However, the updates mainly focus on fixing bugs for a smoother experience. Angular 10.0.0-next.0 and 10.0.0-next.1 have arrived.
10.0.0-next.1 contains only improvements to the API docs.
10.0.0-next.0 boasts a long list of bug fixes and one breaking change regarding the router. In addition to this, it has added dependency info and ng-content selectors to the metadata and added the support timeout in the registerWhenStable SW registration strategy.
Here’s all the changes 10.0.0-next.0 adds:
Angular 10.0.0-next.0
Bug Fixes
- common: let
KeyValuePipe
accept type unions withnull
(#36093) (d783519), closes #35743 - compiler: avoid undefined expressions in holey array (#36343) (5516802)
- compiler: record correct end of expression (#34690) (df890d7), closes #33477
- compiler: resolve enum values in binary operations (#36461) (64022f5), closes #35584
- compiler-cli: pass real source spans where they are empty (#31805) (e893c5a)
- core: avoid migration error when non-existent symbol is imported (#36367) (d43c306), closes #36346
- core: ngOnDestroy on multi providers called with incorrect context (#35840) (95fc3d4), closes #35231
- core: run
APP_INITIALIZER
s before accessingLOCALE_ID
token in Ivy TestBed (#36237) (1649743), closes #36230 - core: undecorated-classes-with-decorated-fields migration does not decorate derived classes (#35339) (32eafef), closes #34376
- core: workaround Terser inlining bug (#36200) (0ce8ad3)
- elements: correctly handle setting inputs to
undefined
(#36140) (9ba46d9) - elements: correctly set
SimpleChange#firstChange
for pre-existing inputs (#36140) (b14ac96), closes #36130 - language-service: infer type of elements of array-like objects (#36312) (fe2b692), closes #36191
- language-service: use the
HtmlAst
to get the span of HTML tag (#36371) (81195a2) - localize: allow ICU expansion case to start with any character except
}
(#36123) (fced8ee), closes #31586 - ngcc: add process title (#36448) (76a8cd5), closes /github.com/angular/angular/issues/36414#issuecomment-609644282
- ngcc: allow ngcc configuration to match pre-release versions of packages (#36370) (326240e)
- ngcc: correctly detect imported TypeScript helpers (#36284) (ca25c95), closes #36089
- ngcc: correctly identify relative Windows-style import paths (#36372) (aecf9de)
- ngcc: correctly identify the package path of secondary entry-points (#36249) (995cd15), closes #35747
- ngcc: detect non-emitted, non-imported TypeScript helpers (#36418) (5fa7b8b)
- ngcc: do not spawn more processes than intended in parallel mode (#36280) (5cee709), closes #35719 #36278 /github.com/angular/angular/blob/b8e9a30d3b6/packages/compiler-cli/ngcc/src/main.ts#L429 /github.com/angular/angular/blob/b8e9a30d3b6/packages/compiler-cli/ngcc/src/execution/cluster/master.ts#L108 /github.com/angular/angular/blob/b8e9a30d3b6/packages/compiler-cli/ngcc/src/execution/cluster/master.ts#L110 /github.com/angular/angular/blob/b8e9a30d3b6/packages/compiler-cli/ngcc/src/execution/cluster/master.ts#L199
- ngcc: do not write entry-point manifest outside node_modules (#36299) (c6dd900), closes #36296
- ngcc: don’t crash on cyclic source-map references (#36452) (ee70a18), closes #35727 #35757
- ngcc: handle bad path mappings when finding entry-points (#36331) (cc4b813), closes #36313 #36283
- ngcc: handle entry-points within container folders (#36305) (38ad1d9), closes #35756 #36216
- ngcc: sniff
main
property for ESM5 format (#36396) (2463548), closes #35788 - ngcc: support ignoring deep-imports via package config (#36423) (f9fb833), closes #35750
- ngcc: support simple
browser
property in entry-points (#36396) (6b3aa60), closes #36062 - ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (380de1e), closes #36119
- ngcc: use preserve whitespaces from tsconfig if provided (#36189) (b8e9a30), closes #35871
- platform-server: update
xhr2
dependency (#36366) (b59bc0e), closes #36358 - router: allow UrlMatcher to return null (#36402) (568e9df), closes #29824
- router: state data missing in routerLink (#36462) (e0415db), closes #33173
- service-worker: by default register the SW after 30s even the app never stabilizes (#35870) (29e8a64), closes #34464
- service-worker: prevent SW registration strategies from affecting app stabilization (#35870) (2d7c95f)
Features
- compiler: add dependency info and ng-content selectors to metadata (#35695) (32ce8b1)
- compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (d714b95)
- core: undecorated-classes migration should handle derived abstract classes (#35339) (c24ad56)
- service-worker: support timeout in
registerWhenStable
SW registration strategy (#35870) (00efacf), closes #34464
BREAKING CHANGES
- router: UrlMatcher’s type now reflects that it could always return null.If you implemented your own Router or Recognizer class, please update it to handle matcher returning null.
Updated 26 March, 2020
The speed of Angular releases is picking up! Just yesterday, we wrote about the third release candidate for Angular 9.1.0, and now the final version has arrived. Angular 9.1.0 adds new features including support for TypeScript 3.8, performance improvements, and a long list of bug fixes.
On the Angular Blog, Stephen Fluin shared the future plans for Angular:
This is the last planned minor release for 9.x. As we start work towards 10.0, you should expect to see 10.0 prereleases usually once per week, even though they will contain only minimal changes at first.
Here’s what’s new in the latest minor version:
Angular 9.1.0
Release Highlights
- TypeScript 3.8 update
- ngcc improvements
- performance optimizations
- concurrency & reliability improvements for monorepo use-cases (npm postinstall script no longer recommended)
- i18n now supports RTL locale info
- Ivy compatibility fixes
Features
- bazel: enable ivy template type-checking in g3 (#35672) (8f5b7f3)
- bazel: transform generated shims (in Ivy) with tsickle (#35975) (e3ecdc6), closes #35848
- compiler-cli: implement NgTscPlugin on top of the NgCompiler API (#34792) (3c69442dbd)
- compiler: Add sourceSpan and keySpan to TemplateBinding (#35897) (06779cf)
- compiler: Propagate source span and value span to Variable AST (#36047) (31bec8c)
- compiler: add dependency info and ng-content selectors to metadata (#35695) (fb70083)
- language-service: improve non-callable error message (#35271) (acc483e)
- language-service: modularize error messages (#35678) (47a1811), closes #32663
- ngcc: implement source-map flattening (#35132) (df816c9)
- ngcc: pause async ngcc processing if another process has the lockfile (#35131) (eef0753)
- ngcc: support invalidating the entry-point manifest (#35931) (8ea61a1)
- zone.js add a temp solution to support passive event listeners. (#34503) (f9d483e)
- zone.js add an tickOptions parameter with property processNewMacroTasksSynchronously. (#33838) (17b862c), closes #33799
- zone.js add interface definitions which zone extends EventTarget (#35304) (4acb676), closes #35173
- zone.js support passive event options by defining global variables in zone.js config file (#34503) (d7d359e)
- define all zone.js configurations to typescript interfaces (#35329) (03d88c7)
- typescript 3.8 support (#35864) (95c729f)
Performance Improvements
- core: add micro benchmark for destroy hook invocation (#35784) (0653db1)
- core: adding micro benchmark for host bindings (#35705) (8fed1fe), closes #35568
- core: avoid recursive scope recalculation when TestBed.overrideModule is used (#35454) (0a1a989)
- core: use multiple directives in host bindings micro benchmark (#35736) (5bc39f8)
- ivy: remove unused event argument in listener instructions (#35097) (9228d7f)
- ngcc: link segment markers for faster traversal (#36027) (47025e0)
- ngcc: only create tasks for non-processed formats (#35719) (d7efc45)
- ngcc: reduce directory traversing (#35756) (e0a35e1), closes #35717
- ngcc: spawn workers lazily (#35719) (dc40a93), closes #35717
- ngcc: store the position of SegmentMarkers to avoid unnecessary computation (#36027) (772bb5e)
- ngcc: use binary search when flattening mappings (#36027) (348ff0c)
- ngcc: use line start positions for computing offsets in source-map flattening (#36027) (e890082)
- ngcc: use the
EntryPointManifest
inDirectoryWalkerEntryPointFinder
(#35931) (ec9f4d5)
Bug Fixes
- animations: Remove ɵAnimationDriver from private exports (#35690) (ec789b0)
- animations: allow computeStyle to work on elements created in Node (#35810) (17cf04e)
- animations: false positive when detecting Node in Webpack builds (#35134) (dc4ae4b), closes #35117
- animations: process shorthand
margin
andpadding
styles correctly (#35701) (35c9f0d), closes #35463 - bazel: devserver shows blank page in Windows (#35159) (727f92f)
- bazel: do not use manifest paths for generated imports within compilation unit (#35841) (9581658)
- bazel: ng_package rule creates incorrect UMD module exports (#35792) (5c2a908), closes angular/components#18652
- bazel: prod server doesn’t serve files in windows (#35991) (96e3449)
- bazel: spawn prod server using port 4200 (#35160) (829f506)
- bazel: update ibazel to 0.11.1 (#35158) (4e6d237)
- bazel: update several packages for better windows support (#35991) (32f099a)
- bazel: update typescript peer dependency range (#36013) (5e3a898)
- common: let
KeyValuePipe
accept type unions withnull
(#36093) (407fa42), closes #35743 - compiler-cli: TypeScript peer dependency range (#36008) (5f7d066)
- compiler-cli: suppress extraRequire errors in Closure Compiler (#35737) (c296bfc)
- compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (2ce5fa3)
- compiler: do not recurse to find static symbols of same module (#35262) (e179c58)
- compiler: record correct end of expression (#34690) (df890d7), closes #33477
- compiler: report errors for missing binding names (#34595) (d13cab7)
- compiler: support directive inputs with interpolations on
<ng-template>
s (#35984) (79659ee), closes #35752 - compiler: support i18n attributes on
<ng-template>
tags (#35681) (40da51f) - compiler: type-checking error for duplicate variables in templates (#35674) (2c41bb8), closes #35186
- compiler: use FatalDiagnosticError to generate better error messages (#35244) (646655d)
- core: Add
style="{{exp}}"
based interpolation (#34202) (2562a3b), closes #33575 - core: Remove
debugger
statement (#35763) (8f38eb7), closes #35470 - core: Remove
debugger
statement when assert is thrown (#35763) (4003538), closes #35470 - core: add
noSideEffects()
tomake*Decorator()
functions (#35769) (dc6a791) - core: add
noSideEffects()
toɵɵdefineComponent()
(#35769) (ba36127) - core: add strictLiteralTypes to align core + VE checking of literals (#35462) (4253662)
- core: adhere to bootstrap options for JIT compiled components (#35534) (e342ffd), closes #35230
- core: allow null / undefined values in query results (#35796) (5652fb1), closes #35673
- core: better handing of ICUs outside of i18n blocks (#35347) (c013dd4)
- core: better inference for circularly referenced directive types (#35622) (173a1ac), closes #35372 #35603 #35522
- core: correctly concatenate static and dynamic binding to
class
when shadowed (#35350) (8c75f21), closes #35335 - core: don’t re-invoke pure pipes that throw and arguments are the same (#35827) (19cfaf7)
- core: emulate a View Engine type-checking bug with safe navigation (#35462) (a61fe41)
- core: error in AOT when pipe inherits constructor from injectable that uses DI (#35468) (e17bde9), closes #35277
- core: error when accessing NgModuleRef.componentFactoryResolver in constructor (#35637) (835618c), closes #35580
- core: handle
<ng-template>
with local refs in i18n blocks (#35758) (ef75875) - core: incorrectly generating shared pure function between null and object literal (#35481) (22786c8), closes #33705 #35298
- core: injecting incorrect provider when re-providing injectable with useClass (#34574) (0bc35a7), closes #34110
- core: log error instead of warning for unknown properties and elements (#35798) (00f3c58), closes #35699
- core: make subclass inherit developer-defined data (#35105) (a756161)
- core: provide a more detailed error message for NG6002/NG6003 (#35620) (2d89b5d)
- core: remove side effects from
ɵɵNgOnChangesFeature()
(#35769) (9cf85d2) - core: remove side effects from
ɵɵgetInheritedFactory()
(#35769) (c195d22) - core: remove support for
Map
/Set
in[class]
/[style]
bindings (#35392) (2ca7984) - core: support sanitizer value in the [style] bindings (#35564) (3af103a), closes #35476
- core: treat
[class]
and[className]
as unrelated bindings (#35668) (a153b61), closes #35577 - core: unable to NgModuleRef.injector in module constructor (#35731) (1f8a243), closes #35677 #35639
- core: undecorated-classes-with-di migration should handle libraries generated with CLI versions past v6.2.0 (#35824) (59607dc), closes #34985
- core: use proper configuration to compile Injectable in JIT (#35706) (7b13977)
- core: verify parsed ICU expression at runtime before executing it (#35923) (8c2d842), closes #35689
- core: workaround Terser inlining bug (#36200) (f71d132)
- elements: correctly handle setting inputs to
undefined
(#36140) (e066bdd) - elements: correctly set
SimpleChange#firstChange
for pre-existing inputs (#36140) (447a600), closes #36130 - elements: schematics fail with schema.json not found error (#35211) (94d002b), closes #35154
- forms: change Array.reduce usage to Array.forEach (#35349) (554c2cb)
- ivy:
LFrame
needs to release memory onleaveView()
(#35156) (b9b512f), closes #35148 - ivy: add attributes and classes to host elements based on selector (#34481) (f95b8ce)
- ivy: ensure module imports are instantiated before the module being declared (#35172) (b6a3a73)
- ivy: error if directive with synthetic property binding is on same node as directive that injects ViewContainerRef (#35343) (d6bc63f), closes #35342
- ivy: narrow
NgIf
context variables in template type checker (#35125) (40039d8), closes #34572 - ivy: queries should match elements inside ng-container with the descendants: false option (#35384) (3f4e02b), closes #34768
- ivy: repeat template guards to narrow types in event handlers (#35193) (dea1b96), closes #35073
- ivy: set namespace for host elements of dynamically created components (#35136) (480a4c3)
- ivy: support dynamic query tokens in AOT mode (#35307) (3e3a1ef), closes #34267
- ivy: wrong context passed to ngOnDestroy when resolved multiple times (#35249) (5fbfe69), closes #35167
- language-service: Suggest ? and ! operator on nullable receiver (#35200) (3cc24a9)
- language-service: fix calculation of pipe spans (#35986) (406419b)
- language-service: get the right ‘ElementAst’ in the nested HTML tag (#35317) (8e354da)
- language-service: infer $implicit value for ngIf template contexts (#35941) (18b1bd4)
- language-service: infer context type of structural directives (#35537) (#35561) (54fd33f)
- language-service: provide completions for the structural directive that only injects the ‘ViewContainerRef’ (#35466) (66c06eb)
- language-service: provide hover for interpolation in attribute value (#35494) (049f118), closes PR#34847
- language-service: resolve the real path for symlink (#35895) (4e1d780)
- language-service: resolve the variable from the template context first (#35982) (3d46a45)
- localize: allow ICU expansion case to start with any character except
}
(#36123) (0767d37), closes #31586 - localize: improve matching and parsing of XLIFF 1.2 translation files (#35793) (350ac11)
- localize: improve matching and parsing of XLIFF 2.0 translation files (#35793) (08071e5)
- localize: improve matching and parsing of XTB translation files (#35793) (0e2a577)
- localize: improve placeholder mismatch error message (#35593) (53f059e)
- localize: merge translation from all XLIFF
<file>
elements (#35936) (fc4c3c3), closes #35839 - localize: show helpful error when providing an invalid cli option (#36010) (aad02e8)
- localize: support minified ES5
$localize
calls (#35562) (df75451), closes #35376 - ngcc: add default config for
angular2-highcharts
(#35527) (3cc8127), closes #35399 - ngcc: allow deep-import warnings to be ignored (#35683) (20b0c80), closes #35615
- ngcc: capture path-mapped entry-points that start with same string (#35592) (71b5970), closes #35536
- ngcc: consistently delegate to TypeScript host for typing files (#36089) (9e70bcb), closes #35078
- ngcc: correctly detect emitted TS helpers in ES5 (#35191) (bd6a39c)
- ngcc: correctly detect outer aliased class identifiers in ES5 (#35527) (fde8915), closes #35399
- ngcc: do not crash on entry-point that fails to compile (#36083) (ff665b9)
- ngcc: do not crash on overlapping entry-points (#36083) (c9f554c)
- ngcc: ensure that path-mapped secondary entry-points are processed correctly (#35227) (c3c1140), closes #35188
- ngcc: handle imports in dts files when processing CommonJS (#35191) (b6e8847), closes #34356
- ngcc: handle mappings outside the content when flattening source-maps (#35718) (73cf7d5), closes #35709
- ngcc: handle missing sources when flattening source-maps (#35718) (72c4fda), closes #35709
- ngcc: handle multiple original sources when flattening source-maps (#36027) (a40be00)
- ngcc: introduce a new LockFile implementation that uses a child-process (#35861) (c55f900), closes #35761
- ngcc: show helpful error when providing an invalid option (#36010) (1f89c61)
- ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (6defe96), closes #36119
- ngcc: use preserve whitespaces from tsconfig if provided (#36189) (aef4323), closes #35871
- platform-browser: add missing peerDependency on
[@angular](https://github.com/angular)/animations
(#35949) (64d6f13), closes #35888 - router: removed unused ApplicationRef dependency (#35642) (c839c05), closes /github.com/angular/angular/commit/5a849829c42330d7e88e83e916e6e36380c97a97#diff-c0baae5e1df628e1a217e8dc38557
- router: state data missing in routerLink (#33203) (de67978)
- service-worker: treat 503 as offline (#35595) (96cdf03), closes #35571
- fix flaky test cases of passive events (#35679) (8ef29b6)
Updated 25 March, 2020
Three new release candidates for Angular 9.1.0 have arrived. These release candidates mostly fix some bugs, preparing for the update.
9.1.0-rc.2 includes a new feature for the compiler and adds dependency info and ng-content selectors to metadata. From the pull request:
This commit augments the FactoryDef declaration of Angular decorated classes to contain information about the parameter decorators used in the constructor. If no constructor is present, or none of the parameters have any Angular decorators, then this will be represented using the null type. Otherwise, a tuple type is used where the entry at index i corresponds with parameter i.
9.1.0-rc.0 updates TypeScript to version 3.8 and fixes some issues with Ivy compatibility. It also optimizes ngcc performance and reliability and i18n now supports RTL locale info.
From the changelog, below are all the new bug fixes that 9.1.0-rc.2, rc.1, and rc.0 include:
- common: let
KeyValuePipe
accept type unions withnull
(#36093) (407fa42), closes #35743 - elements: correctly handle setting inputs to
undefined
(#36140) (e066bdd) - elements: correctly set
SimpleChange#firstChange
for pre-existing inputs (#36140) (447a600), closes #36130 - ngcc: use path-mappings from tsconfig in dependency resolution (#36180) (6defe96), closes #36119
- ngcc: use preserve whitespaces from tsconfig if provided (#36189) (aef4323), closes #35871
- compiler: record correct end of expression (#34690) (df890d7), closes #33477
- core: workaround Terser inlining bug (#36200) (f71d132)
- localize: allow ICU expansion case to start with any character except
}
(#36123) (0767d37), closes #31586 - compiler: Propagate value span of ExpressionBinding to ParsedProperty (#36133) (2ce5fa3)
- core: adhere to bootstrap options for JIT compiled components (#35534) (e342ffd), closes #35230
- ngcc: do not crash on entry-point that fails to compile (#36083) (ff665b9)
- ngcc: do not crash on overlapping entry-points (#36083) (c9f554c)
Updated 19 March, 2020
No rest for Angular. One week after the most recent update, Angular 9.1.0-next.5 is here.
Between all of the usual bug fixes, this update also increases performance and speed with some new tweaks. Source map flattening has been sped up (see the original pull request) and modifies the `generatedSegment` properties in mappings so that they link directly to the following segment. The position of SegmentMarkers will also now be stored in order to avoid further unnecessary computation.
The previously time-consuming task of the DirectoryWalkerEntryPointFinder traversing the entire node_modules library has also been changed to save time. It now stores and re-uses the path to entry-points.
From the changelog, here’s the full list:
Bug Fixes
- bazel: prod server doesn’t serve files in windows (#35991) (96e3449)
- bazel: update several packages for better windows support (#35991) (32f099a)
- bazel: update typescript peer dependency range (#36013) (5e3a898)
- compiler: do not recurse to find static symbols of same module (#35262) (e179c58)
- compiler: support directive inputs with interpolations on
<ng-template>
s (#35984) (79659ee), closes #35752 - compiler-cli: TypeScript peer dependency range (#36008) (5f7d066)
- core: don’t re-invoke pure pipes that throw and arguments are the same (#35827) (19cfaf7)
- core: verify parsed ICU expression at runtime before executing it (#35923) (8c2d842), closes #35689
- language-service: infer $implicit value for ngIf template contexts (#35941) (18b1bd4)
- localize: show helpful error when providing an invalid cli option (#36010) (aad02e8)
- ngcc: consistently delegate to TypeScript host for typing files (#36089) (9e70bcb), closes #35078
- ngcc: handle multiple original sources when flattening source-maps (#36027) (a40be00)
- ngcc: show helpful error when providing an invalid option (#36010) (1f89c61)
Features
- bazel: transform generated shims (in Ivy) with tsickle (#35975) (e3ecdc6), closes #35848
- compiler: Add sourceSpan and keySpan to TemplateBinding (#35897) (06779cf)
- compiler: Propagate source span and value span to Variable AST (#36047) (31bec8c)
- language-service: improve non-callable error message (#35271) (acc483e)
- ngcc: support invalidating the entry-point manifest (#35931) (8ea61a1)
Performance Improvements
- ngcc: link segment markers for faster traversal (#36027) (47025e0)
- ngcc: store the position of SegmentMarkers to avoid unnecessary computation (#36027) (772bb5e)
- ngcc: use binary search when flattening mappings (#36027) (348ff0c)
- ngcc: use line start positions for computing offsets in source-map flattening (#36027) (e890082)
- ngcc: use the
EntryPointManifest
inDirectoryWalkerEntryPointFinder
(#35931) (ec9f4d5)
Updated 11 March, 2020
Just days after Angular 9.1.0-next.3, Angular updated with 9.1.0-next.4. This update mostly focuses on fixes bugs, providing a more stable release. Included in the bug fixes is a new LockFile implementation, using a child-process and some issues with fixed flaky test cases.
In addition, TypeScript 3.8 is now supported. This is currently the latest edition of TypeScript, so be sure to check out what new breaking changes and improvements it adds. Among the list of new features, TypeScript 3.8 includes support for ECMAScript private fields, type-only imports and exports, and top-level await.
9.1.0-next.4 reduces directory traversing, which will reduce the amount of time that findEntryPoints
takes 9701.143ms
to 4177.278ms
.
Here are all the changes in this edition:
Bug Fixes
- bazel: do not use manifest paths for generated imports within compilation unit (#35841) (9581658)
- core: undecorated-classes-with-di migration should handle libraries generated with CLI versions past v6.2.0 (#35824) (59607dc), closes #34985
- language-service: fix calculation of pipe spans (#35986) (406419b)
- language-service: resolve the real path for symlink (#35895) (4e1d780)
- language-service: resolve the variable from the template context first (#35982) (3d46a45)
- localize: improve matching and parsing of XLIFF 1.2 translation files (#35793) (350ac11)
- fix flaky test cases of passive events (#35679) (8ef29b6)
- localize: improve matching and parsing of XLIFF 2.0 translation files (#35793) (08071e5)
- localize: improve matching and parsing of XTB translation files (#35793) (0e2a577)
- localize: merge translation from all XLIFF
<file>
elements (#35936) (fc4c3c3), closes #35839 - ngcc: introduce a new LockFile implementation that uses a child-process (#35861) (c55f900), closes #35761
- platform-browser: add missing peerDependency on
[@angular](https://github.com/angular)/animations
(#35949) (64d6f13), closes #35888 - router: state data missing in routerLink (#33203) (de67978)
Features
Performance Improvements
Updated 9 March, 2020
Hot on the heels of the most recent update comes Angular 9.1.0-next.3. This update includes a long list of bug fixes and performance improvements. Among these improvements includes added micro benchmarks for both destroy hook invocation and host bindings. This improvement closes several pull requests on the topic.
Meanwhile, two new features have been added. Modularization of the Language Service’s diagnostic messages will help centralize error messages and prepares Angular for potential additional features such as annotating diagnostics. (View the original pull request for more information.) In addition to this, now Angular adds zone configuration to TypeScript interfaces.
Let’s have a look at all the newest bug fixes in this release:
Angular 9.1.0-next.3
Bug Fixes
- animations: allow computeStyle to work on elements created in Node (#35810) (17cf04e)
- animations: process shorthand
margin
andpadding
styles correctly (#35701) (35c9f0d), closes #35463 - bazel: ng_package rule creates incorrect UMD module exports (#35792) (5c2a908), closes angular/components#18652
- compiler: support i18n attributes on
<ng-template>
tags (#35681) (40da51f) - compiler: type-checking error for duplicate variables in templates (#35674) (2c41bb8), closes #35186
- compiler-cli: suppress extraRequire errors in Closure Compiler (#35737) (c296bfc)
- core: add
noSideEffects()
tomake*Decorator()
functions (#35769) (dc6a791) - core: add
noSideEffects()
toɵɵdefineComponent()
(#35769) (ba36127) - core: allow null / undefined values in query results (#35796) (5652fb1), closes #35673
- core: handle
<ng-template>
with local refs in i18n blocks (#35758) (ef75875) - core: log error instead of warning for unknown properties and elements (#35798) (00f3c58), closes #35699
- core: Remove
debugger
statement (#35763) (8f38eb7), closes #35470 - core: Remove
debugger
statement when assert is thrown (#35763) (4003538), closes #35470 - core: remove side effects from
ɵɵgetInheritedFactory()
(#35769) (c195d22) - core: remove side effects from
ɵɵNgOnChangesFeature()
(#35769) (9cf85d2) - core: treat
[class]
and[className]
as unrelated bindings (#35668) (a153b61), closes #35577 - core: unable to NgModuleRef.injector in module constructor (#35731) (1f8a243), closes #35677 #35639
- core: use proper configuration to compile Injectable in JIT (#35706) (7b13977)
- ivy: narrow
NgIf
context variables in template type checker (#35125) (40039d8), closes #34572 - ivy: support dynamic query tokens in AOT mode (#35307) (3e3a1ef), closes #34267
- ngcc: allow deep-import warnings to be ignored (#35683) (20b0c80), closes #35615
- ngcc: handle mappings outside the content when flattening source-maps (#35718) (73cf7d5), closes #35709
- ngcc: handle missing sources when flattening source-maps (#35718) (72c4fda), closes #35709
Features
- language-service: modularize error messages (#35678) (47a1811), closes #32663
- define all zone.js configurations to typescript interfaces (#35329) (03d88c7)
Performance Improvements
- core: add micro benchmark for destroy hook invocation (#35784) (0653db1)
- core: adding micro benchmark for host bindings (#35705) (8fed1fe), closes #35568
- core: use multiple directives in host bindings micro benchmark (#35736) (5bc39f8)
- ngcc: only create tasks for non-processed formats (#35719) (d7efc45)
- ngcc: spawn workers lazily (#35719) (dc40a93), closes #35717
Updated 2 March, 2020
Angular 10 is scheduled to arrive in May 2020. On the way to the new major version, Angular 9.1.0-next.2 has been released. This beta adds several bug fixes for different areas, including animations, core, language-service and ngcc. For example, in animations, a false positive is no longer returned when detecting Node in Webpack builds and the ɵAnimationDriver has been removed from private exports.
New features have been added for ngcc, bazel and zone.js, whereas the core and Ivy have received performance improvements. Take a look at all that has happened in the beta release as well as in the two previous betas:
Angular 9.1.0-next.2
Bug Fixes
- animations: false positive when detecting Node in Webpack builds (#35134) (dc4ae4b), closes #35117
- animations: Remove ɵAnimationDriver from private exports (#35690) (ec789b0)
- compiler: use FatalDiagnosticError to generate better error messages (#35244) (646655d)
- core: make subclass inherit developer-defined data (#35105) (a756161)
- core: support sanitizer value in the [style] bindings (#35564) (3af103a), closes #35476
- core: Add
style="{{exp}}"
based interpolation (#34202) (2562a3b), closes #33575 - core: add strictLiteralTypes to align core + VE checking of literals (#35462) (4253662)
- core: better inference for circularly referenced directive types (#35622) (173a1ac), closes #35372 #35603 #35522
- core: emulate a View Engine type-checking bug with safe navigation (#35462) (a61fe41)
- core: error in AOT when pipe inherits constructor from injectable that uses DI (#35468) (e17bde9), closes #35277
- core: error when accessing NgModuleRef.componentFactoryResolver in constructor (#35637) (835618c), closes #35580
- core: incorrectly generating shared pure function between null and object literal (#35481) (22786c8), closes #33705 #35298
- core: injecting incorrect provider when re-providing injectable with useClass (#34574) (0bc35a7), closes #34110
- core: provide a more detailed error message for NG6002/NG6003 (#35620) (2d89b5d)
- language-service: get the right ‘ElementAst’ in the nested HTML tag (#35317) (8e354da)
- language-service: infer context type of structural directives (#35537) (#35561) (54fd33f)
- language-service: provide completions for the structural directive that only injects the ‘ViewContainerRef’ (#35466) (66c06eb)
- language-service: provide hover for interpolation in attribute value (#35494) (049f118), closes PR#34847
- localize: improve placeholder mismatch error message (#35593) (53f059e)
- localize: support minified ES5
$localize
calls (#35562) (df75451), closes #35376 - ngcc: add default config for
angular2-highcharts
(#35527) (3cc8127), closes #35399 - ngcc: capture path-mapped entry-points that start with same string (#35592) (71b5970), closes #35536
- ngcc: correctly detect emitted TS helpers in ES5 (#35191) (bd6a39c)
- ngcc: correctly detect outer aliased class identifiers in ES5 (#35527) (fde8915), closes #35399
- ngcc: handle imports in dts files when processing CommonJS (#35191) (b6e8847), closes #34356
- router: removed unused ApplicationRef dependency (#35642) (c839c05), closes /github.com/angular/angular/commit/5a849829c42330d7e88e83e916e6e36380c97a97#diff-c0baae5e1df628e1a217e8dc38557
- service-worker: treat 503 as offline (#35595) (96cdf03), closes #35571
Features
- ngcc: implement source-map flattening (#35132) (df816c9)
- bazel: enable ivy template type-checking in g3 (#35672) (8f5b7f3)
- zone.js add interface definitions which zone extends EventTarget (#35304) (4acb676), closes #35173
- zone.js add a temp solution to support passive event listeners. (#34503) (f9d483e)
- zone.js add an tickOptions parameter with property processNewMacroTasksSynchronously. (#33838) (17b862c), closes #33799
- zone.js support passive event options by defining global variables in zone.js config file (#34503) (d7d359e)
Performance Improvements
- core: avoid recursive scope recalculation when TestBed.overrideModule is used (#35454) (0a1a989)
- ivy: remove unused event argument in listener instructions (#35097) (9228d7f)
Angular 9.1.0-next.1
Bug Fixes
- core: better handing of ICUs outside of i18n blocks (#35347) (c013dd4)
- core: correctly concatenate static and dynamic binding to
class
when shadowed (#35350) (8c75f21), closes #35335 - core: remove support for
Map
/Set
in[class]
/[style]
bindings (#35392) (2ca7984) - ivy:
LFrame
needs to release memory onleaveView()
(#35156) (b9b512f), closes #35148 - ivy: add attributes and classes to host elements based on selector (#34481) (f95b8ce)
- ivy: error if directive with synthetic property binding is on same node as directive that injects ViewContainerRef (#35343) (d6bc63f), closes #35342
- ivy: queries should match elements inside ng-container with the descendants: false option (#35384) (3f4e02b), closes #34768
- ivy: wrong context passed to ngOnDestroy when resolved multiple times (#35249) (5fbfe69), closes #35167
Features
Angular 9.1.0-next.0
Bug Fixes
- bazel: devserver shows blank page in Windows (#35159) (727f92f)
- bazel: spawn prod server using port 4200 (#35160) (829f506)
- bazel: update ibazel to 0.11.1 (#35158) (4e6d237)
- compiler: report errors for missing binding names (#34595) (d13cab7)
- elements: schematics fail with schema.json not found error (#35211) (94d002b), closes #35154
- forms: change Array.reduce usage to Array.forEach (#35349) (554c2cb)
- ivy: ensure module imports are instantiated before the module being declared (#35172) (b6a3a73)
- ivy: repeat template guards to narrow types in event handlers (#35193) (dea1b96), closes #35073
- ivy: set namespace for host elements of dynamically created components (#35136) (480a4c3)
- language-service: Suggest ? and ! operator on nullable receiver (#35200) (3cc24a9)
- ngcc: ensure that path-mapped secondary entry-points are processed correctly (#35227) (c3c1140), closes #35188
Features
- compiler-cli: implement NgTscPlugin on top of the NgCompiler API (#34792) (3c69442dbd)