The angular team recently announced the minor Release of Angular 9. It upgrades Angular 9 to version 9.1.
This release provides minor bug fixes and improvement of features that came out in Angular 9.
- TypeScript 3.8 Support
- 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 Improvements
- 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)