Zum Inhalt springen
verdict:

Angular 22.0.0

featured

note: die Zusammenfassung und die Release Notes sind auf Englisch

warning: Eingriff nötig

14 Breaking Changes4 Kernpunkte

Angular 22 makes OnPush the default, drops TypeScript 5.9, and removes ComponentFactoryResolver and Hammer.js

Zusammenfassung · nur aus den Release Notes · claude-haiku-5-5 · prompt v7

breaking changesalle zitiert, jeder mit einer Lösung

breaking[1]: Components without a changeDetection property now use OnPush.

Component with undefined changeDetection property are now OnPush by default. Specify changeDetection: ChangeDetectionStrategy.Eager to keep the previous behavior.

help: Set changeDetection: ChangeDetectionStrategy.Eager on components that need the previous behavior.

breaking[2]: data- prefixed attributes no longer bind inputs or outputs.

data prefixed attribute no-longer bind inputs nor outputs.

help: Check templates for data- attributes that were meant to bind inputs or outputs and rename them.

breaking[3]: Elements with multiple matching selectors now throw at compile time.

Elements with multiple matching selectors will now throw at compile time.

help: Check for elements that match more than one directive selector and narrow the selectors.

breaking[4]: TypeScript versions older than 6.0 are no longer supported.

* TypeScript versions older than 6.0 are no longer supported.

help: Upgrade TypeScript to 6.0 or newer before upgrading Angular.

breaking[5]: Leave animations are no longer limited to the element being removed.

Leave animations are no longer limited to the element being removed.

help: Check leave animations that assumed they only applied to the removed element.

breaking[6]: ChangeDetectorRef.checkNoChanges was removed.

ChangeDetectorRef.checkNoChanges was removed. In tests use fixture.detectChanges() instead.

help: In tests, use fixture.detectChanges() instead.

breaking[7]: createNgModuleRef was removed.

createNgModuleRef was removed, use createNgModule instead

help: Use createNgModule instead.

breaking[8]: ComponentFactoryResolver and ComponentFactory are no longer available.

ComponentFactoryResolver and ComponentFactory are no longer available. Pass the component class directly to APIs that previously required a factory, such as ViewContainerRef.createComponent or use the standalone createComponentFunction.

help: Pass the component class directly to APIs such as ViewContainerRef.createComponent, or use the standalone createComponent function.

breaking[9]: min and max validation rules no longer accept string values.

min and max validation rules no longer support

help: Bind only numbers or null to min and max validation rules.

breaking[10]: HttpXhrBackend is no longer the default backend, so upload progress reports need it explicitly.

Use the HttpXhrBackend with provideHttpClient(withXhr) if you want to keep supporting upload progress reports.

help: Use provideHttpClient(withXhr) if you need upload progress reports.

breaking[11]: Hammer.js integration has been removed.

Hammer.js integration has been removed. Use your own implementation.

help: Replace Hammer.js gestures with your own implementation.

breaking[12]: paramsInheritanceStrategy now defaults to 'always', so route parameters are inherited from all parent routes.

paramsInheritanceStrategy now defaults to 'always'

help: Set paramsInheritanceStrategy to 'emptyOnly' in your router configuration to restore the previous behavior.

breaking[13]: provideRoutes() has been removed.

provideRoutes() has been removed. Use provideRouter() or ROUTES as multi token if necessary.

help: Use provideRouter() or ROUTES as a multi token instead.

breaking[14]: getAngularLib and setAngularLib have been removed.

Deprecated getAngularLib/setAngularLib have been removed use getAngularJSGlobal/setAngularJSGlobal instead.

help: Use getAngularJSGlobal and setAngularJSGlobal instead.

Kernpunkte

release-notesgithub.com/angular/angular · 207 Zeilen
  1. ### compiler
  2. | Commit | Description |
  3. | -- | -- |
  4. | [![feat - 47fcbc4704](https://img.shields.io/badge/47fcbc4704-feat-blue)](https://github.com/angular/angular/commit/47fcbc470462192c4f9e273d8dce8b353d5baaa2) | allow safe navigation to correctly narrow down nullables |
  5. | [![feat - 2896c93cc1](https://img.shields.io/badge/2896c93cc1-feat-blue)](https://github.com/angular/angular/commit/2896c93cc1077e1306acd91f4ed62fed4204a26b) | Angular expressions with optional chaining returns `undefined` |
  6. | [![feat - e850643b1b](https://img.shields.io/badge/e850643b1b-feat-blue)](https://github.com/angular/angular/commit/e850643b1b8dca8cfdc12705be51441197cd987a) | Support comments in html element. |
  7. | [![fix - 96be4f429b](https://img.shields.io/badge/96be4f429b-fix-green)](https://github.com/angular/angular/commit/96be4f429ba316c75d2d4a39ececcc529ec10943) | abstract emitter producing incorrect code for dynamic imports |
  8. | [![fix - 488d962bc7](https://img.shields.io/badge/488d962bc7-fix-green)](https://github.com/angular/angular/commit/488d962bc700fb7189749c63ba63eac50a54e363) | Don't bind inputs/outputs for `data-` attributes |
  9. | [![fix - 2c5aabb9da](https://img.shields.io/badge/2c5aabb9da-fix-green)](https://github.com/angular/angular/commit/2c5aabb9daf5da3ad539381ef1e430c77583e3bf) | don't escape dollar sign in literal expression |
  10. | [![fix - c7aef8ec5d](https://img.shields.io/badge/c7aef8ec5d-fix-green)](https://github.com/angular/angular/commit/c7aef8ec5dd12b5b1d4c703a61bd1dd43f998e18) | enforce parentheses containing arguments for :host-context |
  11. | [![fix - b225a5d902](https://img.shields.io/badge/b225a5d902-fix-green)](https://github.com/angular/angular/commit/b225a5d902f0ee1f6f68cde42266748cb1f2b1f8) | invalid type checking code if field name needs to be quoted |
  12. | [![fix - ab9154ab75](https://img.shields.io/badge/ab9154ab75-fix-green)](https://github.com/angular/angular/commit/ab9154ab75bdd36759c77917216b57285b243ea4) | normalize tag names with custom namespaces in DomElementSchemaRegistry (#68868) |
  13. | [![fix - 8a1533c9ad](https://img.shields.io/badge/8a1533c9ad-fix-green)](https://github.com/angular/angular/commit/8a1533c9ad7c306e03d7c50676f87b56bade5bf6) | preserve leading commas in animation definitions |
  14. | [![fix - 194f723f66](https://img.shields.io/badge/194f723f66-fix-green)](https://github.com/angular/angular/commit/194f723f6620ea3cdf490b762ecbef8df6bb2c8a) | remove dedicated support for legacy shadow DOM selectors |
  15. | [![fix - 4c25a42e98](https://img.shields.io/badge/4c25a42e98-fix-green)](https://github.com/angular/angular/commit/4c25a42e988e7a59d4d4dc3121cd77f7b344c048) | remove deprecated shadow CSS encapsulation polyfills |
  16. | [![fix - 6ff620a033](https://img.shields.io/badge/6ff620a033-fix-green)](https://github.com/angular/angular/commit/6ff620a03364d6ab60cea47de942a04ec5a26c50) | sanitize dynamic href and xlink:href bindings on SVG a elements (#68868) |
  17. | [![fix - 7dc1017e51](https://img.shields.io/badge/7dc1017e51-fix-green)](https://github.com/angular/angular/commit/7dc1017e517c077a6aa8fd749392a2af1277e1b7) | simplify handling of colon host with a selector list |
  18. | [![fix - d99ab0e040](https://img.shields.io/badge/d99ab0e040-fix-green)](https://github.com/angular/angular/commit/d99ab0e0400d256021d6cc601e2a6e16f784a406) | stop generating unused field |
  19. | [![fix - 03db2aefaa](https://img.shields.io/badge/03db2aefaa-fix-green)](https://github.com/angular/angular/commit/03db2aefaa88bc73b6af6ed1c9c722b65079ab3b) | throw on duplicate input/outputs |
  20. | [![fix - 786ef8261f](https://img.shields.io/badge/786ef8261f-fix-green)](https://github.com/angular/angular/commit/786ef8261f4faca0693ef73938d3a6275b5baf7f) | throw on invalid in expressions |
  21. | [![fix - ccb7d427e4](https://img.shields.io/badge/ccb7d427e4-fix-green)](https://github.com/angular/angular/commit/ccb7d427e4f07506c14c50ce0cbe87c57930ebb5) | type check invalid for loops |
  22. ### compiler-cli
  23. | Commit | Description |
  24. | -- | -- |
  25. | [![feat - b8d3f36ed9](https://img.shields.io/badge/b8d3f36ed9-feat-blue)](https://github.com/angular/angular/commit/b8d3f36ed962bd4f5abd6bf6e55078b56ce9fffa) | add support for Node.js 26.0.0 |
  26. | [![feat - 7f9450219f](https://img.shields.io/badge/7f9450219f-feat-blue)](https://github.com/angular/angular/commit/7f9450219f5c30d1ce0a90061864e8c844c8807c) | Adds warning for prefetch without main defer trigger |
  27. | [![feat - 2eae497a04](https://img.shields.io/badge/2eae497a04-feat-blue)](https://github.com/angular/angular/commit/2eae497a04a6a9b34397181dcd64dbd103f76c47) | support external TCBs with copied content in specific mode |
  28. | [![fix - e5f96c2d88](https://img.shields.io/badge/e5f96c2d88-fix-green)](https://github.com/angular/angular/commit/e5f96c2d8813f95c91761ae3080065575ca3b536) | animation events not type checked properly when bound through HostListener decorator |
  29. | [![fix - 9218140348](https://img.shields.io/badge/9218140348-fix-green)](https://github.com/angular/angular/commit/9218140348cb2e3ad301c1e7f37db4b0cdad4f9d) | resolve TCB mapping failure for safe property reads with as any |
  30. | [![fix - 7a0d6b8df2](https://img.shields.io/badge/7a0d6b8df2-fix-green)](https://github.com/angular/angular/commit/7a0d6b8df21ca6a407e5c63dc0af753bc39c90c5) | transform dropping exclamationToken from properties |
  31. | [![refactor - ca67828ee2](https://img.shields.io/badge/ca67828ee2-refactor-yellow)](https://github.com/angular/angular/commit/ca67828ee247bdff46736661e51f43f2ca736a24) | introduce NG8023 compile-time diagnostic for duplicate selectors |
  32. ### core
  33. | Commit | Description |
  34. | -- | -- |
  35. | [![feat - 17d3ea44e2](https://img.shields.io/badge/17d3ea44e2-feat-blue)](https://github.com/angular/angular/commit/17d3ea44e25e077b18178aa8108828f36eb821f4) | add `IdleRequestOptions` support to `IdleService` |
  36. | [![feat - 3b0ae5fef0](https://img.shields.io/badge/3b0ae5fef0-feat-blue)](https://github.com/angular/angular/commit/3b0ae5fef0328477ee0f5d51980217e7c583a606) | add `provideWebMcpTools` |
  37. | [![feat - 444b024d49](https://img.shields.io/badge/444b024d49-feat-blue)](https://github.com/angular/angular/commit/444b024d49725afc8b40aec67cfdb63a1f7f23ea) | Add a `injectAsync` helper function |
  38. | [![feat - 3bc095d508](https://img.shields.io/badge/3bc095d508-feat-blue)](https://github.com/angular/angular/commit/3bc095d508653982a48b337afd51bfedbbde1f87) | Add a schematics to migrate `provideHttpClient` to keep using the `HttpXhrBackend` implementation. |
  39. | [![feat - 5a7c1e62dc](https://img.shields.io/badge/5a7c1e62dc-feat-blue)](https://github.com/angular/angular/commit/5a7c1e62dc2a4fa199b85150eca66914c107a6f4) | add ability to cache resources for SSR |
  40. | [![feat - cb4cb77053](https://img.shields.io/badge/cb4cb77053-feat-blue)](https://github.com/angular/angular/commit/cb4cb77053a817fe800af6395783720761e29ada) | Add migration to add `ChangeDetectionStrategy.Eager` where applicable |
  41. | [![feat - 2206efa55f](https://img.shields.io/badge/2206efa55f-feat-blue)](https://github.com/angular/angular/commit/2206efa55fc1de160333d62680f8893c47525335) | add special return statuses for resource params |
  42. | [![feat - 246a984a5d](https://img.shields.io/badge/246a984a5d-feat-blue)](https://github.com/angular/angular/commit/246a984a5df0006bc5f4025baf918345aa38499c) | add TestBed.getFixture |
  43. | [![feat - b918beda32](https://img.shields.io/badge/b918beda32-feat-blue)](https://github.com/angular/angular/commit/b918beda323eefef17bf1de03fde3d402a3d4af0) | allow debouncing signals |
  44. | [![feat - 8bc31a515f](https://img.shields.io/badge/8bc31a515f-feat-blue)](https://github.com/angular/angular/commit/8bc31a515ff6e8edda6ea5786a47ae5a788acd36) | Allow other expression for exhaustive typechecking |
  45. | [![feat - 4e331062e8](https://img.shields.io/badge/4e331062e8-feat-blue)](https://github.com/angular/angular/commit/4e331062e8385e066102c3bbb8be439eabfdf8c9) | allow synchronous values for stream Resources |
  46. | [![feat - a0aa8304cd](https://img.shields.io/badge/a0aa8304cd-feat-blue)](https://github.com/angular/angular/commit/a0aa8304cd78a58a990c3b648e41f6888b50b1b3) | bootstrap via `ApplicationRef` with config |
  47. | [![feat - 9c55fcb3e6](https://img.shields.io/badge/9c55fcb3e6-feat-blue)](https://github.com/angular/angular/commit/9c55fcb3e65ffcde32d7ac438ea40a69ffc2b3b6) | de-duplicate host directives |
  48. | [![feat - 8fe025f514](https://img.shields.io/badge/8fe025f514-feat-blue)](https://github.com/angular/angular/commit/8fe025f5149d7eb460e784a5a17bb467f85b9080) | drop support for TypeScript 5.9 |
  49. | [![feat - 2f5ab541ea](https://img.shields.io/badge/2f5ab541ea-feat-blue)](https://github.com/angular/angular/commit/2f5ab541eafba72bc0079a8650d0b96b0ddfde2f) | enhance profiling with documentation URLs |
  50. | [![feat - ef1810197b](https://img.shields.io/badge/ef1810197b-feat-blue)](https://github.com/angular/angular/commit/ef1810197b679bfcbf21a139b930984302cbe77f) | export experimental `declareWebMcpTool` support |
  51. | [![feat - 75f2cb8f56](https://img.shields.io/badge/75f2cb8f56-feat-blue)](https://github.com/angular/angular/commit/75f2cb8f566de43a5f2fd27bb2982c796b93490d) | implement Angular DI graph in-page AI tool |
  52. | [![feat - 8f3d0b9d97](https://img.shields.io/badge/8f3d0b9d97-feat-blue)](https://github.com/angular/angular/commit/8f3d0b9d97424e058eb7bce57d80833fb68dec4a) | introduce `@Service` decorator |
  53. | [![feat - df659b8d0c](https://img.shields.io/badge/df659b8d0c-feat-blue)](https://github.com/angular/angular/commit/df659b8d0cf64eeed418c60bc16cae5630086401) | re-introduce nested leave animations scoped to component boundaries |
  54. | [![feat - 8ce9cc4f6b](https://img.shields.io/badge/8ce9cc4f6b-feat-blue)](https://github.com/angular/angular/commit/8ce9cc4f6b10d60300dedb6571822ce77a96f2ce) | register AI runtime debugging tools |
  55. | [![feat - eae8f7e30b](https://img.shields.io/badge/eae8f7e30b-feat-blue)](https://github.com/angular/angular/commit/eae8f7e30b9f8bebdcdb535bd86260199c34274b) | Set default Component changeDetection strategy to OnPush |
  56. | [![feat - cdda51a3b2](https://img.shields.io/badge/cdda51a3b2-feat-blue)](https://github.com/angular/angular/commit/cdda51a3b2f48d5623acef0c6f54afb7af921b58) | support bootstrapping Angular applications underneath shadow roots |
  57. | [![feat - a5981b83a6](https://img.shields.io/badge/a5981b83a6-feat-blue)](https://github.com/angular/angular/commit/a5981b83a60577d9068d2429bcbed969edca581b) | support customization of @defer's on idle behavior |
  58. | [![feat - 98eb24cea0](https://img.shields.io/badge/98eb24cea0-feat-blue)](https://github.com/angular/angular/commit/98eb24cea0498382cc7cf7d7b85cd9ead5ad99ad) | Support optional timeout for idle deferred triggers |
  59. | [![feat - dc3131c639](https://img.shields.io/badge/dc3131c639-feat-blue)](https://github.com/angular/angular/commit/dc3131c639542ad6a463bff3da5ca84c6f8ecb6f) | TestBed.getFixture -> TestBed.getLastFixture and update implementation |
  60. | [![feat - 9f479ae964](https://img.shields.io/badge/9f479ae964-feat-blue)](https://github.com/angular/angular/commit/9f479ae9641a5c928f8eeab9c7846245002b3eff) | Update Testability to use PendingTasks for stability indicator |
  61. | [![fix - 8ebae1de33](https://img.shields.io/badge/8ebae1de33-fix-green)](https://github.com/angular/angular/commit/8ebae1de330729f945391283e25661aada11b4ed) | allow service with factory on abstract classes |
  62. | [![fix - f9d8da6924](https://img.shields.io/badge/f9d8da6924-fix-green)](https://github.com/angular/angular/commit/f9d8da69243ae1cd0eb1ab197fdd80e9a34107c1) | bind global context to idle callback shims in @defer's idle service |
  63. | [![fix - 61a48e99aa](https://img.shields.io/badge/61a48e99aa-fix-green)](https://github.com/angular/angular/commit/61a48e99aad1152e9ffb2fd0b4e1b472f06649e8) | do not register dom triggers when defer blocks are in manual mode |
  64. | [![fix - 49748b5c79](https://img.shields.io/badge/49748b5c79-fix-green)](https://github.com/angular/angular/commit/49748b5c7989b4e27686798ea7935e87d804eece) | enforce return type for service factory |
  65. | [![fix - 16adbbf423](https://img.shields.io/badge/16adbbf423-fix-green)](https://github.com/angular/angular/commit/16adbbf4234cc67507f578e588a8500fc5d31013) | ensure custom controls resolve transitive host directives |
  66. | [![fix - 50e599e73e](https://img.shields.io/badge/50e599e73e-fix-green)](https://github.com/angular/angular/commit/50e599e73ec5bb8f483e749d76fff579e33b1670) | lazy-initialize debounced state to prevent computation cycle |
  67. | [![fix - 7aad302c3e](https://img.shields.io/badge/7aad302c3e-fix-green)](https://github.com/angular/angular/commit/7aad302c3ee6e9c711ab10ae0a9e8bc66d35291c) | mark service decorator as stable |
  68. | [![fix - a08e4fb93c](https://img.shields.io/badge/a08e4fb93c-fix-green)](https://github.com/angular/angular/commit/a08e4fb93c371252da16b3b22cbf78f4ac180fa2) | normalize tag names in runtime i18n attribute security context lookup (#68868) |
  69. | [![fix - b20f0fe078](https://img.shields.io/badge/b20f0fe078-fix-green)](https://github.com/angular/angular/commit/b20f0fe07820362f7e3bddb892a2a229a820a028) | prevent rxResource from leaking a subscription |
  70. | [![fix - 22f8b0a500](https://img.shields.io/badge/22f8b0a500-fix-green)](https://github.com/angular/angular/commit/22f8b0a500807e69b323378b843465a949e08abf) | resolver function not matching expected type |
  71. | [![fix - 88d138ccc8](https://img.shields.io/badge/88d138ccc8-fix-green)](https://github.com/angular/angular/commit/88d138ccc84b839784f59575fddcda3fcaf18d35) | support prefix-insensitive DOM schema lookups and compile-time i18n attribute validation |
  72. | [![fix - bfe6f6c2a5](https://img.shields.io/badge/bfe6f6c2a5-fix-green)](https://github.com/angular/angular/commit/bfe6f6c2a5570cd669afa3dd8b1cd9e2d91e393a) | synchronize core sanitization schema with compiler |
  73. | [![fix - 5e99ae9f00](https://img.shields.io/badge/5e99ae9f00-fix-green)](https://github.com/angular/angular/commit/5e99ae9f00fb119cac93a19bbf36aee71299cae1) | widen type for directive inputs/outputs |
  74. | [![refactor - b9b5c279b4](https://img.shields.io/badge/b9b5c279b4-refactor-yellow)](https://github.com/angular/angular/commit/b9b5c279b444ab2684fe911982930dc7c31ed43c) | enhance AnimationCallbackEvent.animationComplete signature |
  75. | [![refactor - 69fb1614ef](https://img.shields.io/badge/69fb1614ef-refactor-yellow)](https://github.com/angular/angular/commit/69fb1614eff6e40bb7dcca81f275ac32b9cbd28a) | remove `checkNoChanges` from the public API. |
  76. | [![refactor - 36936872c9](https://img.shields.io/badge/36936872c9-refactor-yellow)](https://github.com/angular/angular/commit/36936872c962b2073c8f44080684701068866691) | remove `createNgModuleRef` |
  77. | [![refactor - 9d76ac8229](https://img.shields.io/badge/9d76ac8229-refactor-yellow)](https://github.com/angular/angular/commit/9d76ac82290e047f1481fb38bd95233e951a77de) | remove ComponentFactoryResolver & ComponentFactory from the api surface |
  78. | [![refactor - b1f5181ffd](https://img.shields.io/badge/b1f5181ffd-refactor-yellow)](https://github.com/angular/angular/commit/b1f5181ffd8e9906affd486d9e2f655eb144f175) | remove ComponentFactoryResolver & ComponentFactory from the api surface"" |
  79. ### forms
  80. | Commit | Description |
  81. | -- | -- |
  82. | [![feat - 74f76d8075](https://img.shields.io/badge/74f76d8075-feat-blue)](https://github.com/angular/angular/commit/74f76d8075d03b1271aef37b974c9e15f9c7d3af) | add `reloadValidation` to Signal Forms to manually trigger async validation |
  83. | [![feat - 24e52d450d](https://img.shields.io/badge/24e52d450d-feat-blue)](https://github.com/angular/angular/commit/24e52d450d201e3da90bb64f84358f9eccd7877d) | add debounce option to validateAsync and validateHttp |
  84. | [![feat - 709f5a390c](https://img.shields.io/badge/709f5a390c-feat-blue)](https://github.com/angular/angular/commit/709f5a390ca0de04f8066012a5cb36999f2fd4a6) | add FieldState.getError() |
  85. | [![feat - 7745365910](https://img.shields.io/badge/7745365910-feat-blue)](https://github.com/angular/angular/commit/7745365910771d97c91e9b640c2c26a99bfa5a6d) | graduate signal forms APIs to public API |
  86. | [![feat - f9f24fc669](https://img.shields.io/badge/f9f24fc669-feat-blue)](https://github.com/angular/angular/commit/f9f24fc6699b762d17127d0412343041ecdea70e) | shim legacy NG_VALIDATORS into parseErrors for CVA mode (#67943) |
  87. | [![feat - 41b1410cb8](https://img.shields.io/badge/41b1410cb8-feat-blue)](https://github.com/angular/angular/commit/41b1410cb8a333a2ce6569483cd10866effc154d) | support binding `number|null` to `<input type="text">` |
  88. | [![feat - 3983080236](https://img.shields.io/badge/3983080236-feat-blue)](https://github.com/angular/angular/commit/3983080236e348ecc17ab4e65a6a5cc0a16aa315) | support ngNoCva as an opt-out for ControlValueAccessors |
  89. | [![feat - c4ce3f345f](https://img.shields.io/badge/c4ce3f345f-feat-blue)](https://github.com/angular/angular/commit/c4ce3f345fdb14595f0991dff488c4043a0fc71c) | template & reactive support for FVC |
  90. | [![fix - 3524de29f3](https://img.shields.io/badge/3524de29f3-fix-green)](https://github.com/angular/angular/commit/3524de29f34bef5df941e08e88920dffe4f880c8) | Add support for range type with outside of native bounds |
  91. | [![fix - de56d74da3](https://img.shields.io/badge/de56d74da3-fix-green)](https://github.com/angular/angular/commit/de56d74da39178308b81a2d94c8eb4488cb0cbab) | align FormField CVA selection priority with standard forms |
  92. | [![fix - 0eeb1b5f03](https://img.shields.io/badge/0eeb1b5f03-fix-green)](https://github.com/angular/angular/commit/0eeb1b5f03395ea0ddb047790af4cf1440655a07) | allow `FormRoot` to be used without submission options (#67727) |
  93. | [![fix - 394ad0c2a2](https://img.shields.io/badge/394ad0c2a2-fix-green)](https://github.com/angular/angular/commit/394ad0c2a26eec8a8f7136b1b7971420b30a117e) | allow late-bound input types for signals forms |
  94. | [![fix - ee8d2098cb](https://img.shields.io/badge/ee8d2098cb-fix-green)](https://github.com/angular/angular/commit/ee8d2098cb3cdce1589c462cd9a66eae490477f9) | change FieldState optional properties to non-optional | undefined |
  95. | [![fix - df8b020299](https://img.shields.io/badge/df8b020299-fix-green)](https://github.com/angular/angular/commit/df8b020299b5e579956578d9137cab93a8065045) | clear native date inputs correctly in signal forms when changed via native UI |
  96. | [![fix - 2e9aeea0fe](https://img.shields.io/badge/2e9aeea0fe-fix-green)](https://github.com/angular/angular/commit/2e9aeea0fed1a2eae261b95cb1479519d0428b83) | deduplicate writeValue calls in CVA interop |
  97. | [![fix - 0ea50ffe5a](https://img.shields.io/badge/0ea50ffe5a-fix-green)](https://github.com/angular/angular/commit/0ea50ffe5adb07515867e8bf30d1abee49413003) | ensure debounced async validators produce pending status during debounce |
  98. | [![fix - 3c44d7c90b](https://img.shields.io/badge/3c44d7c90b-fix-green)](https://github.com/angular/angular/commit/3c44d7c90b2392f7307d1b1dd0734db10ede63f5) | fix orphan field error on blur during array removal |
  99. | [![fix - 849dba6c65](https://img.shields.io/badge/849dba6c65-fix-green)](https://github.com/angular/angular/commit/849dba6c6506c2696a43a3fad6ee459e17b4b6c8) | implement custom control reset propagation |
  100. | [![fix - 5835a5e3a7](https://img.shields.io/badge/5835a5e3a7-fix-green)](https://github.com/angular/angular/commit/5835a5e3a73686473ad064f53f93d9d9acb541a6) | prevent orphan field crashes in debounceSync and async validation |
  101. | [![fix - 3e7ce0dafc](https://img.shields.io/badge/3e7ce0dafc-fix-green)](https://github.com/angular/angular/commit/3e7ce0dafcf1c0b9ed7a8c528f7120f5c796a668) | restrict `SignalFormsConfig` to a readonly API |
  102. | [![fix - fb166772d2](https://img.shields.io/badge/fb166772d2-fix-green)](https://github.com/angular/angular/commit/fb166772d2e987c0145bdd5bbe83b2a29d74f31c) | split the `touched` model into an input and `touch` output |
  103. | [![fix - 83032e3605](https://img.shields.io/badge/83032e3605-fix-green)](https://github.com/angular/angular/commit/83032e36059ad0fc61cde2ac26c1eb0cede14e8c) | support generic unions in signal form schemas |
  104. | [![fix - 68c3abbe09](https://img.shields.io/badge/68c3abbe09-fix-green)](https://github.com/angular/angular/commit/68c3abbe09f1937081b83af3c7d82ed1a044974f) | synchronize controls with the model on reset |
  105. | [![fix - 2061fd8253](https://img.shields.io/badge/2061fd8253-fix-green)](https://github.com/angular/angular/commit/2061fd8253882a46336aae8d73a79a1b176449e0) | Untrack `setValue` in reactive forms |
  106. | [![fix - 72d3ace03c](https://img.shields.io/badge/72d3ace03c-fix-green)](https://github.com/angular/angular/commit/72d3ace03c1292ba9d6fdf7b418ba3287bf54316) | use controlValue in NgControl for CVA interop (#67943) |
  107. | [![perf - 3b4ef1e2ff](https://img.shields.io/badge/3b4ef1e2ff-perf-orange)](https://github.com/angular/angular/commit/3b4ef1e2ffa7f33583b9d6c5d927e2148a507921) | avoid redundant invalidations in parser errors signal |
  108. | [![perf - 07a9358157](https://img.shields.io/badge/07a9358157-perf-orange)](https://github.com/angular/angular/commit/07a935815782eb58a2109bcaacde33896e8d5d76) | avoid spurious recomputation in FormField.parseErrors |
  109. | [![perf - 98c5afdb02](https://img.shields.io/badge/98c5afdb02-perf-orange)](https://github.com/angular/angular/commit/98c5afdb02192f99c886fc3fda13ec6f39018f23) | lazily instantiate signal form fields |
  110. | [![perf - e0536091f5](https://img.shields.io/badge/e0536091f5-perf-orange)](https://github.com/angular/angular/commit/e0536091f5f6c2033e377998eea3bf65b14f5ac6) | optimize reactivity by using shallow array equality |
  111. | [![perf - 9b9769479b](https://img.shields.io/badge/9b9769479b-perf-orange)](https://github.com/angular/angular/commit/9b9769479b295bf34bae9a938ee758a256bd4b32) | shortcut deepSignal writes if value is unchanged |
  112. | [![refactor - 592a12d6c9](https://img.shields.io/badge/592a12d6c9-refactor-yellow)](https://github.com/angular/angular/commit/592a12d6c947a0210020b00fd98ffa9fdaca2c20) | remove string support from min and max validation rules (#68001) |
  113. ### http
  114. | Commit | Description |
  115. | -- | -- |
  116. | [![feat - 5c432fb8bb](https://img.shields.io/badge/5c432fb8bb-feat-blue)](https://github.com/angular/angular/commit/5c432fb8bb69343ef2633811c37c0c6c0fd65126) | Use `FetchBackend` as default for the `HttpBackend` implementation |
  117. | [![fix - f7b3ed8db2](https://img.shields.io/badge/f7b3ed8db2-fix-green)](https://github.com/angular/angular/commit/f7b3ed8db28c69ee0de9144465da351bda7e85e4) | Introduce a max buffer size for fetch requests on SSR |
  118. | [![fix - e6cfaf5672](https://img.shields.io/badge/e6cfaf5672-fix-green)](https://github.com/angular/angular/commit/e6cfaf567256f5e89903f6b5625540e5a4a3bde3) | prevent `httpResource` from leaking a subscription |
  119. | [![refactor - 7c8c3347ef](https://img.shields.io/badge/7c8c3347ef-refactor-yellow)](https://github.com/angular/angular/commit/7c8c3347efc1be2b5967b9481e3a2a3a23c24977) | Add `reportUploadProgress` & `reportDownloadProgress` options |
  120. ### language-service
  121. | Commit | Description |
  122. | -- | -- |
  123. | [![feat - 5a6d88626b](https://img.shields.io/badge/5a6d88626b-feat-blue)](https://github.com/angular/angular/commit/5a6d88626b604db937287a501cb723c088412a7e) | add angular template inlay hints support |
  124. | [![feat - cfd0f9950c](https://img.shields.io/badge/cfd0f9950c-feat-blue)](https://github.com/angular/angular/commit/cfd0f9950c08324e1c56f16d98a2e3081feeda58) | add Document Symbols support for Angular templates |
  125. | [![feat - c6f98c723c](https://img.shields.io/badge/c6f98c723c-feat-blue)](https://github.com/angular/angular/commit/c6f98c723cdd2c209092927855f8cbaf63ecce30) | Add support for idle timeout in defer blocks |
  126. | [![fix - dc9c72da9b](https://img.shields.io/badge/dc9c72da9b-fix-green)](https://github.com/angular/angular/commit/dc9c72da9b4ca499eebf6e78d7ccc31ea6f63580) | Add support for `@Input` with transforms |
  127. ### migrations
  128. | Commit | Description |
  129. | -- | -- |
  130. | [![feat - 8216d34976](https://img.shields.io/badge/8216d34976-feat-blue)](https://github.com/angular/angular/commit/8216d349768687ed0cf9ef6e1d737e7db9c9e28b) | Add migration for CanMatchFn snapshot parameter (#67452) |
  131. | [![feat - 682aaf943f](https://img.shields.io/badge/682aaf943f-feat-blue)](https://github.com/angular/angular/commit/682aaf943fea3d99f9f834b0bad4d165b4b28071) | add strictTemplates to tsconfig during ng update |
  132. | [![feat - 6a435658e2](https://img.shields.io/badge/6a435658e2-feat-blue)](https://github.com/angular/angular/commit/6a435658e25f9c81ddeaaa72d9c9694fc02bbef1) | Disabling nullishCoalescingNotNullable & optionalChainNotNullable on ng update |
  133. | [![feat - 8f8972b0fd](https://img.shields.io/badge/8f8972b0fd-feat-blue)](https://github.com/angular/angular/commit/8f8972b0fdea2020800e7df5c6d85938602cb7e7) | model + output migrations |
  134. | [![fix - f01901d766](https://img.shields.io/badge/f01901d766-fix-green)](https://github.com/angular/angular/commit/f01901d7668ab926bd7a786f43dbb18f2bb8a5b7) | avoid generating invalid code in ChangeDetectionStrategy.Eager migration |
  135. | [![fix - 1415d86980](https://img.shields.io/badge/1415d86980-fix-green)](https://github.com/angular/angular/commit/1415d869804729e50ed4bcdc829da870b4a70206) | Fix typo for strict-template migration |
  136. | [![fix - 9d9855a415](https://img.shields.io/badge/9d9855a415-fix-green)](https://github.com/angular/angular/commit/9d9855a41597c116ca102e672867047ddf7b4545) | Make the safe optional chaining idempotent |
  137. | [![fix - 0f2160c410](https://img.shields.io/badge/0f2160c410-fix-green)](https://github.com/angular/angular/commit/0f2160c4105a53ef6488d2c799dda9c0959ce7dc) | remove compiler import from safe optional chaining migration |
  138. ### platform-browser
  139. | Commit | Description |
  140. | -- | -- |
  141. | [![feat - 68628dd45b](https://img.shields.io/badge/68628dd45b-feat-blue)](https://github.com/angular/angular/commit/68628dd45bfcf4ea33bc00798bab1e4ab9da804c) | make incremental hydration default behavior |
  142. | [![fix - d45b7a91f9](https://img.shields.io/badge/d45b7a91f9-fix-green)](https://github.com/angular/angular/commit/d45b7a91f961ee40e3ea0f0ae837bf543bddb520) | remove unused styles when associated `host` is dropped |
  143. | [![refactor - f99e7ed20f](https://img.shields.io/badge/f99e7ed20f-refactor-yellow)](https://github.com/angular/angular/commit/f99e7ed20f0b1a26fd275fcf5befd589bb4e5d31) | remove Hammer integration |
  144. ### router
  145. | Commit | Description |
  146. | -- | -- |
  147. | [![feat - 89c9a4de30](https://img.shields.io/badge/89c9a4de30-feat-blue)](https://github.com/angular/angular/commit/89c9a4de308a087ce95246ee259f32c8a927e39e) | Add `options` optional parameter for `withComponentInputBinding` |
  148. | [![feat - c84642ac16](https://img.shields.io/badge/c84642ac16-feat-blue)](https://github.com/angular/angular/commit/c84642ac16bf3588c071bbdcc684daa8d4e494b3) | add unmatchedInputBehavior option to componentInputBinding |
  149. | [![feat - 3683902234](https://img.shields.io/badge/3683902234-feat-blue)](https://github.com/angular/angular/commit/3683902234acf74c7047337bda4db937e93f93d7) | adds browserUrl input support to router links |
  150. | [![fix - 3e7117d690](https://img.shields.io/badge/3e7117d690-fix-green)](https://github.com/angular/angular/commit/3e7117d690386b079c18b435545dab96fc183305) | Add strict typing on 'getResolvedTitleForRoute' |
  151. | [![fix - 579440170b](https://img.shields.io/badge/579440170b-fix-green)](https://github.com/angular/angular/commit/579440170b372f8348cf3e5b5ce9f9f430093947) | make currentSnapshot required in CanMatchFn (#67452) |
  152. | [![fix - 17d10f7a99](https://img.shields.io/badge/17d10f7a99-fix-green)](https://github.com/angular/angular/commit/17d10f7a9921429d0192df6925d20d7236425c9a) | set default paramsInheritanceStrategy to 'always' |
  153. | [![refactor - bdb6ae9dbc](https://img.shields.io/badge/bdb6ae9dbc-refactor-yellow)](https://github.com/angular/angular/commit/bdb6ae9dbc080cd6ce4f5058c65f6b2bd853beda) | remove deprecated `provideRoutes` function. |
  154. ### service-worker
  155. | Commit | Description |
  156. | -- | -- |
  157. | [![fix - 836094c072](https://img.shields.io/badge/836094c072-fix-green)](https://github.com/angular/angular/commit/836094c072cb0f6cdbd35469ee02158667a9ba51) | resolve TS 6.0 compatibility for messageerror listener |
  158. ### upgrade
  159. | Commit | Description |
  160. | -- | -- |
  161. | [![refactor - 01a179577b](https://img.shields.io/badge/01a179577b-refactor-yellow)](https://github.com/angular/angular/commit/01a179577b5a250f5801f6d9a04378aea73c4251) | remove `getAngularLib`/`setAngularLib` |
  162. ## Breaking Changes
  163. ### compiler
  164. - This change will trigger the `nullishCoalescingNotNullable` and `optionalChainNotNullable` diagnostics on exisiting projects.
  165. You might want to disable those 2 diagnotiscs in your `tsconfig` temporarily.
  166. - data prefixed attribute no-longer bind inputs nor outputs.
  167. - The compiler will throw when there a when inputs, outputs or model are binding to the same input/outputs.
  168. - `in` variables will throw in template expressions.
  169. ### compiler-cli
  170. - Elements with multiple matching selectors will now throw at compile time.
  171. ### core
  172. - The second arguement of appRef.bootstrap does not accept `any` anymore. Make sure the element you pass is not nullable.
  173. - * TypeScript versions older than 6.0 are no longer supported.
  174. - Leave animations are no longer limited to the element being removed.
  175. - Component with undefined `changeDetection` property are now `OnPush` by default. Specify `changeDetection: ChangeDetectionStrategy.Eager` to keep the previous behavior.
  176. - change AnimationCallbackEvent.animationComplete signature
  177. - `ChangeDetectorRef.checkNoChanges` was removed. In tests use `fixture.detectChanges()` instead.
  178. - `createNgModuleRef` was removed, use `createNgModule` instead
  179. - `ComponentFactoryResolver` and `ComponentFactory` are no longer available. Pass the component class directly to APIs that previously required a factory, such as `ViewContainerRef.createComponent` or use the standalone `createComponentFunction`.
  180. - `ComponentFactoryResolver` and `ComponentFactory` are no longer available. Pass the component class directly to APIs that previously required a factory, such as `ViewContainerRef.createComponent` or use the standalone `createComponent` function.
  181. - `stream` `Resource` (which includes `rxResource`) are now resolving the value synchronously if the stream/observable returns a value sychronously. This can break some tests that assumed an asynchronous resolution of the value.
  182. ### forms
  183. - `min` and `max` validation rules no longer support
  184. string values. Bound values must be numbers or null.
  185. ### http
  186. - Use the `HttpXhrBackend` with `provideHttpClient(withXhr)` if you want to keep supporting upload progress reports.
  187. ### platform-browser
  188. - This removes styles when they appear to no longer be used by an associated `host`. However other DOM on the page may still be affected by those styles if not leveraging `ViewEncapsulation.Emulated` or if those styles are used by elements outside of Angular, potentially causing other DOM to appear unstyled.
  189. - Hammer.js integration has been removed. Use your own implementation.
  190. ### router
  191. - The return type for `TitleStrategy.getResolvedTitleForRoute`
  192. was previously 'any' while the actual return type could only be either `string`
  193. or `undefined`. The return type now reflects the possible values correctly.
  194. Code that reads the value may need to be adjusted.
  195. (cherry picked from commit ad37f52c1212164c51ffcc533067af05c2c33c89)
  196. - The `currentSnapshot` parameter in `CanMatchFn` and the `canMatch` method of the `CanMatch` interface is now required. While this was already the behavior of the Router at runtime, existing class implementations of `CanMatch` must now include the third argument to satisfy the interface.
  197. - paramsInheritanceStrategy now defaults to 'always'
  198. The default value of paramsInheritanceStrategy has been changed from 'emptyOnly' to 'always'. This means that route parameters are inherited from all parent routes by default. To restore the previous behavior, set paramsInheritanceStrategy to 'emptyOnly' in your router configuration.
  199. - `provideRoutes()` has been removed. Use `provideRouter()` or `ROUTES` as multi token if necessary.
  200. ### upgrade
  201. - Deprecated `getAngularLib`/`setAngularLib` have been removed use `getAngularJSGlobal`/`setAngularJSGlobal` instead.
  202. ## Deprecations
  203. ### http
  204. - `withFetch` is now deprecated, it can be safely removed.
  205. - The `reportProgress` option is deprecated please use `reportUploadProgress` & `reportDownloadProgress` instead.

auf github ansehenimported 2026-09-28 über npm