angular/packages
Dylan Hunn 89d299105a feat(forms): Implement strict types for the Angular Forms package. (#43834)
This PR strongly types the forms package by adding generics to AbstractControl classes as well as FormBuilder. This makes forms type-safe and null-safe, for both controls and values.

The design uses a "control-types" approach. In other words, the type parameter on FormGroup is an object containing controls, and the type parameter on FormArray is an array of controls.

Special thanks to Alex Rickabaugh and Andrew Kushnir for co-design & implementation, to Sonu Kapoor and Netanel Basal for illustrative prior art, and to Cédric Exbrayat for extensive testing and validation.

BREAKING CHANGE: Forms classes accept a generic.

Forms model classes now accept a generic type parameter. Untyped versions of these classes are available to opt-out of the new, stricter behavior.

PR Close #43834
2022-04-12 17:37:04 +00:00
..
animations refactor(animations): include pushUnrecognizedPropertiesWarning in ngDevMode check (#45591) 2022-04-11 21:06:03 +00:00
bazel refactor(bazel): fix dts bundling by accounting for api-extractor change (#45470) 2022-04-11 21:01:09 +00:00
benchpress build: bump version for @angular/benchpress to v0.3.0 (#44893) 2022-01-31 21:27:08 +00:00
common build: update to jasmine 4.0 (#45558) 2022-04-11 16:25:28 +00:00
compiler build: update to jasmine 4.0 (#45558) 2022-04-11 16:25:28 +00:00
compiler-cli fix(compiler-cli): handle inline type-check blocks in nullish coalescing extended check (#45454) 2022-03-29 14:09:33 -07:00
core feat(forms): Implement strict types for the Angular Forms package. (#43834) 2022-04-12 17:37:04 +00:00
docs refactor: fix various typos across different packages (#44523) 2022-01-07 18:11:10 +00:00
elements feat(core): drop support for Node.js 12 (#45286) 2022-03-08 12:05:03 -08:00
examples refactor(core): drop all .ngfactory and .ngsummary imports (#44957) 2022-02-07 15:31:49 -08:00
forms feat(forms): Implement strict types for the Angular Forms package. (#43834) 2022-04-12 17:37:04 +00:00
language-service refactor(compiler-cli): track whether a TcbPosition corresponds with a shim file (#45454) 2022-03-29 14:09:33 -07:00
localize build: update all non-major dependencies (#45470) 2022-04-11 21:01:09 +00:00
misc/angular-in-memory-web-api build: enable useUnknownInCatchVariables (#44679) 2022-02-01 18:17:29 +00:00
platform-browser build: update to jasmine 4.0 (#45558) 2022-04-11 16:25:28 +00:00
platform-browser-dynamic feat(core): drop support for Node.js 12 (#45286) 2022-03-08 12:05:03 -08:00
platform-server refactor: replace deprecated String.prototype.substr() (#45397) 2022-03-24 11:48:09 -07:00
private/testing test: remove Ivy/ViewEngine switch helpers and obsolete tests (#44120) 2021-11-24 19:42:39 +00:00
router Revert "refactor(router): Add warning for relativeLinkResolution: 'legacy' (#45523)" (#45594) 2022-04-12 00:08:41 +00:00
service-worker feat(bazel): allow for generated package.json files in ng_package (#45470) 2022-04-11 21:01:09 +00:00
upgrade refactor: replace deprecated String.prototype.substr() (#45397) 2022-03-24 11:48:09 -07:00
zone.js build: update dependency google-closure-compiler to v20220405 (#45568) 2022-04-11 16:26:25 +00:00
BUILD.bazel build: Auto-gen tsec tsconfig files (#43440) 2021-09-17 17:17:34 +00:00
circular-deps-test.conf.js refactor: replace deprecated String.prototype.substr() (#45397) 2022-03-24 11:48:09 -07:00
empty.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
goog.d.ts refactor(core): replace references to goog.LOCALE with goog.getLocale() (#43089) 2021-08-10 10:35:26 -07:00
license-banner.txt build: bump license year (#44590) 2022-01-04 12:05:25 -08:00
README.md docs: add doc reference to npm package readme (#33911) 2019-11-20 14:46:23 -08:00
system.d.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
tsconfig-build.json build: enable useUnknownInCatchVariables (#44679) 2022-02-01 18:17:29 +00:00
tsconfig-legacy-saucelabs.json build: bundle spec files for saucelabs legacy job (#44281) 2021-11-30 11:56:04 -05:00
tsconfig-test.json build: switch devmode output to es2015 (#44505) 2022-01-05 23:20:20 +00:00
tsconfig-tsec-base.json build: update tsconfigs to use ES2020 as target and module (#43431) 2021-10-01 18:28:42 +00:00
tsconfig.json build: enable useUnknownInCatchVariables (#44679) 2022-02-01 18:17:29 +00:00
tsec-exemption.json build: Enable tsec checks for critical packages. (#43108) 2021-09-13 14:45:57 -07:00
types.d.ts build: update to jasmine 4.0 (#45558) 2022-04-11 16:25:28 +00:00

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

Usage information and reference details can be found in Angular documentation.

License: MIT