forms: custom FormValueControl ignores updateOn ('blur' / 'submit') in reactive and template-driven forms
Which @angular/* package(s) are the source of the bug?
forms
Is this a regression?
No
Description
Custom components implementing Signal Forms FormValueControl<T> (or FormCheckboxControl) without a legacy ControlValueAccessor ignore the updateOn configuration ('blur' or 'submit') when bound to Reactive Forms ([formControl], formControlName) or Template-Driven Forms ([(ngModel)] with [ngModelOptions]).
Instead of deferring the update until blur (touch output) or form submission, the bound FormControl or ngModel updates immediately on every keystroke/emission from the custom control's model() signal.
This breaks a migration path to FormValueControl since it means that switching the implementation of the custom control can break the usage. The assumption in the docs is therefore wrong.
Please provide a link to a minimal reproduction of the bug
https://github.com/sbarfurth/signal-control-update-on
Please provide the exception or error you saw
Please provide the environment you discovered this bug in (run ng version)
Angular CLI : 22.1.8
Angular : 22.1.6
Node.js : 24.19.0
Package Manager : npm 11.17.0
Operating System : linux x64
┌───────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────┼───────────────────┼───────────────────┤
│ @angular/build │ 22.1.8 │ ^22.1.8 │
│ @angular/cli │ 22.1.8 │ ^22.1.8 │
│ @angular/common │ 22.1.6 │ ^22.1.0 │
│ @angular/compiler │ 22.1.6 │ ^22.1.0 │
│ @angular/compiler-cli │ 22.1.6 │ ^22.1.0 │
│ @angular/core │ 22.1.6 │ ^22.1.0 │
│ @angular/forms │ 22.1.6 │ ^22.1.0 │
│ @angular/platform-browser │ 22.1.6 │ ^22.1.0 │
│ @angular/router │ 22.1.6 │ ^22.1.0 │
│ rxjs │ 7.8.2 │ ~7.8.0 │
│ typescript │ 6.0.3 │ ~6.0.2 │
│ vitest │ 4.1.11 │ ^4.0.8 │
└───────────────────────────┴───────────────────┴───────────────────┘
Anything else?
No response
Source: angular/angular