@angular/forms 18.1.0-next.1 → 18.1.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/src/directives/abstract_form_group_directive.mjs +3 -3
  2. package/esm2022/src/directives/checkbox_value_accessor.mjs +3 -3
  3. package/esm2022/src/directives/control_value_accessor.mjs +6 -6
  4. package/esm2022/src/directives/default_value_accessor.mjs +3 -3
  5. package/esm2022/src/directives/ng_control_status.mjs +18 -7
  6. package/esm2022/src/directives/ng_form.mjs +17 -12
  7. package/esm2022/src/directives/ng_model.mjs +3 -3
  8. package/esm2022/src/directives/ng_model_group.mjs +3 -3
  9. package/esm2022/src/directives/ng_no_validate_directive.mjs +3 -3
  10. package/esm2022/src/directives/number_value_accessor.mjs +3 -3
  11. package/esm2022/src/directives/radio_control_value_accessor.mjs +6 -6
  12. package/esm2022/src/directives/range_value_accessor.mjs +3 -3
  13. package/esm2022/src/directives/reactive_directives/form_control_directive.mjs +3 -3
  14. package/esm2022/src/directives/reactive_directives/form_control_name.mjs +3 -3
  15. package/esm2022/src/directives/reactive_directives/form_group_directive.mjs +21 -12
  16. package/esm2022/src/directives/reactive_directives/form_group_name.mjs +6 -6
  17. package/esm2022/src/directives/select_control_value_accessor.mjs +6 -6
  18. package/esm2022/src/directives/select_multiple_control_value_accessor.mjs +6 -6
  19. package/esm2022/src/directives/validators.mjs +27 -27
  20. package/esm2022/src/directives.mjs +4 -4
  21. package/esm2022/src/form_builder.mjs +9 -9
  22. package/esm2022/src/form_providers.mjs +8 -8
  23. package/esm2022/src/model/abstract_model.mjs +54 -30
  24. package/esm2022/src/version.mjs +1 -1
  25. package/fesm2022/forms.mjs +214 -165
  26. package/fesm2022/forms.mjs.map +1 -1
  27. package/index.d.ts +14 -8
  28. package/package.json +4 -4
@@ -1,11 +1,11 @@
1
1
  /**
2
- * @license Angular v18.1.0-next.1
2
+ * @license Angular v18.1.0-next.3
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import * as i0 from '@angular/core';
8
- import { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisSubscribable, ɵRuntimeError, Self, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, Injectable, inject, NgModule, Version } from '@angular/core';
8
+ import { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisSubscribable, ɵRuntimeError, Self, computed, signal, untracked, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, Injectable, inject, NgModule, Version } from '@angular/core';
9
9
  import { ɵgetDOM } from '@angular/common';
10
10
  import { from, forkJoin, Subject } from 'rxjs';
11
11
  import { map } from 'rxjs/operators';
@@ -62,10 +62,10 @@ class BaseControlValueAccessor {
62
62
  setDisabledState(isDisabled) {
63
63
  this.setProperty('disabled', isDisabled);
64
64
  }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
66
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: BaseControlValueAccessor, ngImport: i0 }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
66
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: BaseControlValueAccessor, ngImport: i0 }); }
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
69
69
  type: Directive
70
70
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }] });
71
71
  /**
@@ -78,10 +78,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
78
78
  * applications code.
79
79
  */
80
80
  class BuiltInControlValueAccessor extends BaseControlValueAccessor {
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
82
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
85
85
  type: Directive
86
86
  }] });
87
87
  /**
@@ -129,10 +129,10 @@ class CheckboxControlValueAccessor extends BuiltInControlValueAccessor {
129
129
  writeValue(value) {
130
130
  this.setProperty('checked', value);
131
131
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
133
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]", host: { listeners: { "change": "onChange($event.target.checked)", "blur": "onTouched()" } }, providers: [CHECKBOX_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
133
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]", host: { listeners: { "change": "onChange($event.target.checked)", "blur": "onTouched()" } }, providers: [CHECKBOX_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
134
134
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{
136
136
  type: Directive,
137
137
  args: [{
138
138
  selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',
@@ -229,10 +229,10 @@ class DefaultValueAccessor extends BaseControlValueAccessor {
229
229
  this._composing = false;
230
230
  this._compositionMode && this.onChange(value);
231
231
  }
232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: DefaultValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
233
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]", host: { listeners: { "input": "$any(this)._handleInput($event.target.value)", "blur": "onTouched()", "compositionstart": "$any(this)._compositionStart()", "compositionend": "$any(this)._compositionEnd($event.target.value)" } }, providers: [DEFAULT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
232
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: DefaultValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
233
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]", host: { listeners: { "input": "$any(this)._handleInput($event.target.value)", "blur": "onTouched()", "compositionstart": "$any(this)._compositionStart()", "compositionend": "$any(this)._compositionEnd($event.target.value)" } }, providers: [DEFAULT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
234
234
  }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: DefaultValueAccessor, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: DefaultValueAccessor, decorators: [{
236
236
  type: Directive,
237
237
  args: [{
238
238
  selector: 'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',
@@ -1258,27 +1258,38 @@ class AbstractControlStatus {
1258
1258
  this._cd = cd;
1259
1259
  }
1260
1260
  get isTouched() {
1261
+ // track the touched signal
1262
+ this._cd?.control?._touched?.();
1261
1263
  return !!this._cd?.control?.touched;
1262
1264
  }
1263
1265
  get isUntouched() {
1264
1266
  return !!this._cd?.control?.untouched;
1265
1267
  }
1266
1268
  get isPristine() {
1269
+ // track the pristine signal
1270
+ this._cd?.control?._pristine?.();
1267
1271
  return !!this._cd?.control?.pristine;
1268
1272
  }
1269
1273
  get isDirty() {
1274
+ // pristine signal already tracked above
1270
1275
  return !!this._cd?.control?.dirty;
1271
1276
  }
1272
1277
  get isValid() {
1278
+ // track the status signal
1279
+ this._cd?.control?._status?.();
1273
1280
  return !!this._cd?.control?.valid;
1274
1281
  }
1275
1282
  get isInvalid() {
1283
+ // status signal already tracked above
1276
1284
  return !!this._cd?.control?.invalid;
1277
1285
  }
1278
1286
  get isPending() {
1287
+ // status signal already tracked above
1279
1288
  return !!this._cd?.control?.pending;
1280
1289
  }
1281
1290
  get isSubmitted() {
1291
+ // track the submitted signal
1292
+ this._cd?._submitted?.();
1282
1293
  // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but
1283
1294
  // we avoid instanceof checks to prevent non-tree-shakable references to those types.
1284
1295
  return !!this._cd?.submitted;
@@ -1324,10 +1335,10 @@ class NgControlStatus extends AbstractControlStatus {
1324
1335
  constructor(cd) {
1325
1336
  super(cd);
1326
1337
  }
1327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1328
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgControlStatus, selector: "[formControlName],[ngModel],[formControl]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending" } }, usesInheritance: true, ngImport: i0 }); }
1338
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1339
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgControlStatus, selector: "[formControlName],[ngModel],[formControl]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending" } }, usesInheritance: true, ngImport: i0 }); }
1329
1340
  }
1330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgControlStatus, decorators: [{
1341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgControlStatus, decorators: [{
1331
1342
  type: Directive,
1332
1343
  args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]
1333
1344
  }], ctorParameters: () => [{ type: NgControl, decorators: [{
@@ -1349,10 +1360,10 @@ class NgControlStatusGroup extends AbstractControlStatus {
1349
1360
  constructor(cd) {
1350
1361
  super(cd);
1351
1362
  }
1352
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1353
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending", "class.ng-submitted": "isSubmitted" } }, usesInheritance: true, ngImport: i0 }); }
1363
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1364
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending", "class.ng-submitted": "isSubmitted" } }, usesInheritance: true, ngImport: i0 }); }
1354
1365
  }
1355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1356
1367
  type: Directive,
1357
1368
  args: [{
1358
1369
  selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',
@@ -1722,21 +1733,15 @@ class AbstractControl {
1722
1733
  /** @internal */
1723
1734
  this._onCollectionChange = () => { };
1724
1735
  this._parent = null;
1725
- /**
1726
- * A control is `pristine` if the user has not yet changed
1727
- * the value in the UI.
1728
- *
1729
- * @returns True if the user has not yet changed the value in the UI; compare `dirty`.
1730
- * Programmatic changes to a control's value do not mark it dirty.
1731
- */
1732
- this.pristine = true;
1733
- /**
1734
- * True if the control is marked as `touched`.
1735
- *
1736
- * A control is marked `touched` once the user has triggered
1737
- * a `blur` event on it.
1738
- */
1739
- this.touched = false;
1736
+ /** @internal */
1737
+ this._status = computed(() => this.statusReactive());
1738
+ this.statusReactive = signal(undefined);
1739
+ /** @internal */
1740
+ this._pristine = computed(() => this.pristineReactive());
1741
+ this.pristineReactive = signal(true);
1742
+ /** @internal */
1743
+ this._touched = computed(() => this.touchedReactive());
1744
+ this.touchedReactive = signal(false);
1740
1745
  /**
1741
1746
  * Exposed as observable, see below.
1742
1747
  *
@@ -1789,6 +1794,17 @@ class AbstractControl {
1789
1794
  get parent() {
1790
1795
  return this._parent;
1791
1796
  }
1797
+ /**
1798
+ * The validation status of the control.
1799
+ *
1800
+ * @see {@link FormControlStatus}
1801
+ *
1802
+ * These status values are mutually exclusive, so a control cannot be
1803
+ * both valid AND invalid or invalid AND disabled.
1804
+ */
1805
+ get status() {
1806
+ return untracked(this.statusReactive);
1807
+ }
1792
1808
  /**
1793
1809
  * A control is `valid` when its `status` is `VALID`.
1794
1810
  *
@@ -1848,6 +1864,16 @@ class AbstractControl {
1848
1864
  get enabled() {
1849
1865
  return this.status !== DISABLED;
1850
1866
  }
1867
+ /**
1868
+ * A control is `pristine` if the user has not yet changed
1869
+ * the value in the UI.
1870
+ *
1871
+ * @returns True if the user has not yet changed the value in the UI; compare `dirty`.
1872
+ * Programmatic changes to a control's value do not mark it dirty.
1873
+ */
1874
+ get pristine() {
1875
+ return untracked(this.pristineReactive);
1876
+ }
1851
1877
  /**
1852
1878
  * A control is `dirty` if the user has changed the value
1853
1879
  * in the UI.
@@ -1858,6 +1884,15 @@ class AbstractControl {
1858
1884
  get dirty() {
1859
1885
  return !this.pristine;
1860
1886
  }
1887
+ /**
1888
+ * True if the control is marked as `touched`.
1889
+ *
1890
+ * A control is marked `touched` once the user has triggered
1891
+ * a `blur` event on it.
1892
+ */
1893
+ get touched() {
1894
+ return untracked(this.touchedReactive);
1895
+ }
1861
1896
  /**
1862
1897
  * True if the control has not been marked as touched
1863
1898
  *
@@ -2036,7 +2071,7 @@ class AbstractControl {
2036
2071
  }
2037
2072
  markAsTouched(opts = {}) {
2038
2073
  const changed = this.touched === false;
2039
- this.touched = true;
2074
+ untracked(() => this.touchedReactive.set(true));
2040
2075
  const sourceControl = opts.sourceControl ?? this;
2041
2076
  if (this._parent && !opts.onlySelf) {
2042
2077
  this._parent.markAsTouched({ ...opts, sourceControl });
@@ -2061,7 +2096,7 @@ class AbstractControl {
2061
2096
  }
2062
2097
  markAsUntouched(opts = {}) {
2063
2098
  const changed = this.touched === true;
2064
- this.touched = false;
2099
+ untracked(() => this.touchedReactive.set(false));
2065
2100
  this._pendingTouched = false;
2066
2101
  const sourceControl = opts.sourceControl ?? this;
2067
2102
  this._forEachChild((control) => {
@@ -2076,7 +2111,7 @@ class AbstractControl {
2076
2111
  }
2077
2112
  markAsDirty(opts = {}) {
2078
2113
  const changed = this.pristine === true;
2079
- this.pristine = false;
2114
+ untracked(() => this.pristineReactive.set(false));
2080
2115
  const sourceControl = opts.sourceControl ?? this;
2081
2116
  if (this._parent && !opts.onlySelf) {
2082
2117
  this._parent.markAsDirty({ ...opts, sourceControl });
@@ -2087,7 +2122,7 @@ class AbstractControl {
2087
2122
  }
2088
2123
  markAsPristine(opts = {}) {
2089
2124
  const changed = this.pristine === false;
2090
- this.pristine = true;
2125
+ untracked(() => this.pristineReactive.set(true));
2091
2126
  this._pendingDirty = false;
2092
2127
  const sourceControl = opts.sourceControl ?? this;
2093
2128
  this._forEachChild((control) => {
@@ -2102,7 +2137,7 @@ class AbstractControl {
2102
2137
  }
2103
2138
  }
2104
2139
  markAsPending(opts = {}) {
2105
- this.status = PENDING;
2140
+ untracked(() => this.statusReactive.set(PENDING));
2106
2141
  const sourceControl = opts.sourceControl ?? this;
2107
2142
  if (opts.emitEvent !== false) {
2108
2143
  this._events.next(new StatusChangeEvent(this.status, sourceControl));
@@ -2116,7 +2151,7 @@ class AbstractControl {
2116
2151
  // If parent has been marked artificially dirty we don't want to re-calculate the
2117
2152
  // parent's dirtiness based on the children.
2118
2153
  const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);
2119
- this.status = DISABLED;
2154
+ untracked(() => this.statusReactive.set(DISABLED));
2120
2155
  this.errors = null;
2121
2156
  this._forEachChild((control) => {
2122
2157
  /** We don't propagate the source control downwards */
@@ -2155,7 +2190,7 @@ class AbstractControl {
2155
2190
  // If parent has been marked artificially dirty we don't want to re-calculate the
2156
2191
  // parent's dirtiness based on the children.
2157
2192
  const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);
2158
- this.status = VALID;
2193
+ untracked(() => this.statusReactive.set(VALID));
2159
2194
  this._forEachChild((control) => {
2160
2195
  control.enable({ ...opts, onlySelf: true });
2161
2196
  });
@@ -2193,7 +2228,7 @@ class AbstractControl {
2193
2228
  if (this.enabled) {
2194
2229
  const shouldHaveEmitted = this._cancelExistingSubscription();
2195
2230
  this.errors = this._runValidator();
2196
- this.status = this._calculateStatus();
2231
+ untracked(() => this.statusReactive.set(this._calculateStatus()));
2197
2232
  if (this.status === VALID || this.status === PENDING) {
2198
2233
  // If the canceled subscription should have emitted
2199
2234
  // we make sure the async validator emits the status change on completion
@@ -2217,14 +2252,14 @@ class AbstractControl {
2217
2252
  this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });
2218
2253
  }
2219
2254
  _setInitialStatus() {
2220
- this.status = this._allControlsDisabled() ? DISABLED : VALID;
2255
+ untracked(() => this.statusReactive.set(this._allControlsDisabled() ? DISABLED : VALID));
2221
2256
  }
2222
2257
  _runValidator() {
2223
2258
  return this.validator ? this.validator(this) : null;
2224
2259
  }
2225
2260
  _runAsyncValidator(shouldHaveEmitted, emitEvent) {
2226
2261
  if (this.asyncValidator) {
2227
- this.status = PENDING;
2262
+ untracked(() => this.statusReactive.set(PENDING));
2228
2263
  this._hasOwnPendingAsyncValidator = { emitEvent: emitEvent !== false };
2229
2264
  const obs = toObservable(this.asyncValidator(this));
2230
2265
  this._asyncValidationSubscription = obs.subscribe((errors) => {
@@ -2367,7 +2402,7 @@ class AbstractControl {
2367
2402
  }
2368
2403
  /** @internal */
2369
2404
  _updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted) {
2370
- this.status = this._calculateStatus();
2405
+ untracked(() => this.statusReactive.set(this._calculateStatus()));
2371
2406
  if (emitEvent) {
2372
2407
  this.statusChanges.emit(this.status);
2373
2408
  }
@@ -2413,7 +2448,7 @@ class AbstractControl {
2413
2448
  _updatePristine(opts, changedControl) {
2414
2449
  const newPristine = !this._anyControlsDirty();
2415
2450
  const changed = this.pristine !== newPristine;
2416
- this.pristine = newPristine;
2451
+ untracked(() => this.pristineReactive.set(newPristine));
2417
2452
  if (this._parent && !opts.onlySelf) {
2418
2453
  this._parent._updatePristine(opts, changedControl);
2419
2454
  }
@@ -2423,7 +2458,7 @@ class AbstractControl {
2423
2458
  }
2424
2459
  /** @internal */
2425
2460
  _updateTouched(opts = {}, changedControl) {
2426
- this.touched = this._anyControlsTouched();
2461
+ untracked(() => this.touchedReactive.set(this._anyControlsTouched()));
2427
2462
  this._events.next(new TouchedChangeEvent(this.touched, changedControl));
2428
2463
  if (this._parent && !opts.onlySelf) {
2429
2464
  this._parent._updateTouched(opts, changedControl);
@@ -3362,14 +3397,19 @@ const resolvedPromise$1 = (() => Promise.resolve())();
3362
3397
  * @publicApi
3363
3398
  */
3364
3399
  class NgForm extends ControlContainer {
3400
+ /**
3401
+ * @description
3402
+ * Returns whether the form submission has been triggered.
3403
+ */
3404
+ get submitted() {
3405
+ return untracked(this.submittedReactive);
3406
+ }
3365
3407
  constructor(validators, asyncValidators, callSetDisabledState) {
3366
3408
  super();
3367
3409
  this.callSetDisabledState = callSetDisabledState;
3368
- /**
3369
- * @description
3370
- * Returns whether the form submission has been triggered.
3371
- */
3372
- this.submitted = false;
3410
+ /** @internal */
3411
+ this._submitted = computed(() => this.submittedReactive());
3412
+ this.submittedReactive = signal(false);
3373
3413
  this._directives = new Set();
3374
3414
  /**
3375
3415
  * @description
@@ -3518,7 +3558,7 @@ class NgForm extends ControlContainer {
3518
3558
  * @param $event The "submit" event object
3519
3559
  */
3520
3560
  onSubmit($event) {
3521
- this.submitted = true;
3561
+ this.submittedReactive.set(true);
3522
3562
  syncPendingControls(this.form, this._directives);
3523
3563
  this.ngSubmit.emit($event);
3524
3564
  // Forms with `method="dialog"` have some special behavior
@@ -3540,7 +3580,7 @@ class NgForm extends ControlContainer {
3540
3580
  */
3541
3581
  resetForm(value = undefined) {
3542
3582
  this.form.reset(value);
3543
- this.submitted = false;
3583
+ this.submittedReactive.set(false);
3544
3584
  }
3545
3585
  _setUpdateStrategy() {
3546
3586
  if (this.options && this.options.updateOn != null) {
@@ -3551,10 +3591,10 @@ class NgForm extends ControlContainer {
3551
3591
  path.pop();
3552
3592
  return path.length ? this.form.get(path) : this.form;
3553
3593
  }
3554
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgForm, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3555
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: { options: ["ngFormOptions", "options"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider$1], exportAs: ["ngForm"], usesInheritance: true, ngImport: i0 }); }
3594
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgForm, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3595
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: { options: ["ngFormOptions", "options"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider$1], exportAs: ["ngForm"], usesInheritance: true, ngImport: i0 }); }
3556
3596
  }
3557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgForm, decorators: [{
3597
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgForm, decorators: [{
3558
3598
  type: Directive,
3559
3599
  args: [{
3560
3600
  selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',
@@ -3753,10 +3793,10 @@ class AbstractFormGroupDirective extends ControlContainer {
3753
3793
  }
3754
3794
  /** @internal */
3755
3795
  _checkParentType() { }
3756
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3757
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3796
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3797
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3758
3798
  }
3759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3760
3800
  type: Directive
3761
3801
  }] });
3762
3802
 
@@ -3856,10 +3896,10 @@ class NgModelGroup extends AbstractFormGroupDirective {
3856
3896
  throw modelGroupParentException();
3857
3897
  }
3858
3898
  }
3859
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgModelGroup, deps: [{ token: ControlContainer, host: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3860
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3899
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgModelGroup, deps: [{ token: ControlContainer, host: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
3900
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3861
3901
  }
3862
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgModelGroup, decorators: [{
3902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgModelGroup, decorators: [{
3863
3903
  type: Directive,
3864
3904
  args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]
3865
3905
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -4135,10 +4175,10 @@ class NgModel extends NgControl {
4135
4175
  _getPath(controlName) {
4136
4176
  return this._parent ? controlPath(controlName, this._parent) : [controlName];
4137
4177
  }
4138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgModel, deps: [{ token: ControlContainer, host: true, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: ChangeDetectorRef, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
4139
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: { name: "name", isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"], options: ["ngModelOptions", "options"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding$1], exportAs: ["ngModel"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
4178
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgModel, deps: [{ token: ControlContainer, host: true, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: ChangeDetectorRef, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
4179
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: { name: "name", isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"], options: ["ngModelOptions", "options"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding$1], exportAs: ["ngModel"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
4140
4180
  }
4141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgModel, decorators: [{
4181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgModel, decorators: [{
4142
4182
  type: Directive,
4143
4183
  args: [{
4144
4184
  selector: '[ngModel]:not([formControlName]):not([formControl])',
@@ -4214,10 +4254,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
4214
4254
  * @ngModule FormsModule
4215
4255
  */
4216
4256
  class ɵNgNoValidate {
4217
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4218
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4258
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4219
4259
  }
4220
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4221
4261
  type: Directive,
4222
4262
  args: [{
4223
4263
  selector: 'form:not([ngNoForm]):not([ngNativeValidate])',
@@ -4273,10 +4313,10 @@ class NumberValueAccessor extends BuiltInControlValueAccessor {
4273
4313
  fn(value == '' ? null : parseFloat(value));
4274
4314
  };
4275
4315
  }
4276
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4277
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]", host: { listeners: { "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [NUMBER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4317
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]", host: { listeners: { "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [NUMBER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4278
4318
  }
4279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NumberValueAccessor, decorators: [{
4319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NumberValueAccessor, decorators: [{
4280
4320
  type: Directive,
4281
4321
  args: [{
4282
4322
  selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',
@@ -4339,10 +4379,10 @@ class RadioControlRegistry {
4339
4379
  return false;
4340
4380
  return (controlPair[0]._parent === accessor._control._parent && controlPair[1].name === accessor.name);
4341
4381
  }
4342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4343
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4382
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4383
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4344
4384
  }
4345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RadioControlRegistry, decorators: [{
4385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RadioControlRegistry, decorators: [{
4346
4386
  type: Injectable,
4347
4387
  args: [{ providedIn: 'root' }]
4348
4388
  }] });
@@ -4456,10 +4496,10 @@ class RadioControlValueAccessor extends BuiltInControlValueAccessor {
4456
4496
  if (!this.name && this.formControlName)
4457
4497
  this.name = this.formControlName;
4458
4498
  }
4459
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4460
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: { name: "name", formControlName: "formControlName", value: "value" }, host: { listeners: { "change": "onChange()", "blur": "onTouched()" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4499
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4500
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: { name: "name", formControlName: "formControlName", value: "value" }, host: { listeners: { "change": "onChange()", "blur": "onTouched()" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4461
4501
  }
4462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4502
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4463
4503
  type: Directive,
4464
4504
  args: [{
4465
4505
  selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',
@@ -4520,10 +4560,10 @@ class RangeValueAccessor extends BuiltInControlValueAccessor {
4520
4560
  fn(value == '' ? null : parseFloat(value));
4521
4561
  };
4522
4562
  }
4523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4524
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]", host: { listeners: { "change": "onChange($event.target.value)", "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [RANGE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4563
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4564
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]", host: { listeners: { "change": "onChange($event.target.value)", "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [RANGE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
4525
4565
  }
4526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RangeValueAccessor, decorators: [{
4566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RangeValueAccessor, decorators: [{
4527
4567
  type: Directive,
4528
4568
  args: [{
4529
4569
  selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',
@@ -4653,10 +4693,10 @@ class FormControlDirective extends NgControl {
4653
4693
  _isControlChanged(changes) {
4654
4694
  return changes.hasOwnProperty('form');
4655
4695
  }
4656
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormControlDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
4657
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: FormControlDirective, selector: "[formControl]", inputs: { form: ["formControl", "form"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
4696
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormControlDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
4697
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: FormControlDirective, selector: "[formControl]", inputs: { form: ["formControl", "form"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
4658
4698
  }
4659
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormControlDirective, decorators: [{
4699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormControlDirective, decorators: [{
4660
4700
  type: Directive,
4661
4701
  args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]
4662
4702
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -4733,14 +4773,23 @@ const formDirectiveProvider = {
4733
4773
  * @publicApi
4734
4774
  */
4735
4775
  class FormGroupDirective extends ControlContainer {
4776
+ /**
4777
+ * @description
4778
+ * Reports whether the form submission has been triggered.
4779
+ */
4780
+ get submitted() {
4781
+ return untracked(this._submittedReactive);
4782
+ }
4783
+ // TODO(atscott): Remove once invalid API usage is cleaned up internally
4784
+ set submitted(value) {
4785
+ this._submittedReactive.set(value);
4786
+ }
4736
4787
  constructor(validators, asyncValidators, callSetDisabledState) {
4737
4788
  super();
4738
4789
  this.callSetDisabledState = callSetDisabledState;
4739
- /**
4740
- * @description
4741
- * Reports whether the form submission has been triggered.
4742
- */
4743
- this.submitted = false;
4790
+ /** @internal */
4791
+ this._submitted = computed(() => this._submittedReactive());
4792
+ this._submittedReactive = signal(false);
4744
4793
  /**
4745
4794
  * Callback that should be invoked when controls in FormGroup or FormArray collection change
4746
4795
  * (added or removed). This callback triggers corresponding DOM updates.
@@ -4914,7 +4963,7 @@ class FormGroupDirective extends ControlContainer {
4914
4963
  * @param $event The "submit" event object
4915
4964
  */
4916
4965
  onSubmit($event) {
4917
- this.submitted = true;
4966
+ this._submittedReactive.set(true);
4918
4967
  syncPendingControls(this.form, this.directives);
4919
4968
  this.ngSubmit.emit($event);
4920
4969
  this.form._events.next(new FormSubmittedEvent(this.control));
@@ -4938,7 +4987,7 @@ class FormGroupDirective extends ControlContainer {
4938
4987
  */
4939
4988
  resetForm(value = undefined) {
4940
4989
  this.form.reset(value);
4941
- this.submitted = false;
4990
+ this._submittedReactive.set(false);
4942
4991
  this.form._events.next(new FormResetEvent(this.form));
4943
4992
  }
4944
4993
  /** @internal */
@@ -5001,10 +5050,10 @@ class FormGroupDirective extends ControlContainer {
5001
5050
  throw missingFormException();
5002
5051
  }
5003
5052
  }
5004
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormGroupDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5005
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: FormGroupDirective, selector: "[formGroup]", inputs: { form: ["formGroup", "form"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
5053
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormGroupDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5054
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: FormGroupDirective, selector: "[formGroup]", inputs: { form: ["formGroup", "form"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
5006
5055
  }
5007
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormGroupDirective, decorators: [{
5056
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormGroupDirective, decorators: [{
5008
5057
  type: Directive,
5009
5058
  args: [{
5010
5059
  selector: '[formGroup]',
@@ -5112,10 +5161,10 @@ class FormGroupName extends AbstractFormGroupDirective {
5112
5161
  throw groupParentException();
5113
5162
  }
5114
5163
  }
5115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormGroupName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5116
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormGroupName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5165
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5117
5166
  }
5118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormGroupName, decorators: [{
5167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormGroupName, decorators: [{
5119
5168
  type: Directive,
5120
5169
  args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]
5121
5170
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5232,10 +5281,10 @@ class FormArrayName extends ControlContainer {
5232
5281
  throw arrayParentException();
5233
5282
  }
5234
5283
  }
5235
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormArrayName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5236
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormArrayName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5285
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5237
5286
  }
5238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormArrayName, decorators: [{
5287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormArrayName, decorators: [{
5239
5288
  type: Directive,
5240
5289
  args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]
5241
5290
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5412,10 +5461,10 @@ class FormControlName extends NgControl {
5412
5461
  this.control = this.formDirective.addControl(this);
5413
5462
  this._added = true;
5414
5463
  }
5415
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormControlName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5416
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: FormControlName, selector: "[formControlName]", inputs: { name: ["formControlName", "name"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [controlNameBinding], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
5464
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormControlName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5465
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: FormControlName, selector: "[formControlName]", inputs: { name: ["formControlName", "name"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [controlNameBinding], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
5417
5466
  }
5418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormControlName, decorators: [{
5467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormControlName, decorators: [{
5419
5468
  type: Directive,
5420
5469
  args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]
5421
5470
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5592,10 +5641,10 @@ class SelectControlValueAccessor extends BuiltInControlValueAccessor {
5592
5641
  const id = _extractId$1(valueString);
5593
5642
  return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
5594
5643
  }
5595
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5596
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [SELECT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
5644
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5645
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [SELECT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
5597
5646
  }
5598
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5599
5648
  type: Directive,
5600
5649
  args: [{
5601
5650
  selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',
@@ -5656,10 +5705,10 @@ class NgSelectOption {
5656
5705
  this._select.writeValue(this._select.value);
5657
5706
  }
5658
5707
  }
5659
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5660
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5708
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5709
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5661
5710
  }
5662
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NgSelectOption, decorators: [{
5711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NgSelectOption, decorators: [{
5663
5712
  type: Directive,
5664
5713
  args: [{ selector: 'option' }]
5665
5714
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{
@@ -5823,10 +5872,10 @@ class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {
5823
5872
  const id = _extractId(valueString);
5824
5873
  return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;
5825
5874
  }
5826
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5827
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target)", "blur": "onTouched()" } }, providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
5875
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5876
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target)", "blur": "onTouched()" } }, providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
5828
5877
  }
5829
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5878
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5830
5879
  type: Directive,
5831
5880
  args: [{
5832
5881
  selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',
@@ -5897,10 +5946,10 @@ class ɵNgSelectMultipleOption {
5897
5946
  this._select.writeValue(this._select.value);
5898
5947
  }
5899
5948
  }
5900
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5901
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5949
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5950
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5902
5951
  }
5903
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5952
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5904
5953
  type: Directive,
5905
5954
  args: [{ selector: 'option' }]
5906
5955
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{
@@ -5972,10 +6021,10 @@ class AbstractValidatorDirective {
5972
6021
  enabled(input) {
5973
6022
  return input != null /* both `null` and `undefined` */;
5974
6023
  }
5975
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5976
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
6024
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6025
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
5977
6026
  }
5978
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
6027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
5979
6028
  type: Directive
5980
6029
  }] });
5981
6030
  /**
@@ -6018,10 +6067,10 @@ class MaxValidator extends AbstractValidatorDirective {
6018
6067
  /** @internal */
6019
6068
  this.createValidator = (max) => maxValidator(max);
6020
6069
  }
6021
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6022
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "_enabled ? max : null" } }, providers: [MAX_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6070
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6071
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "_enabled ? max : null" } }, providers: [MAX_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6023
6072
  }
6024
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MaxValidator, decorators: [{
6073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MaxValidator, decorators: [{
6025
6074
  type: Directive,
6026
6075
  args: [{
6027
6076
  selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',
@@ -6071,10 +6120,10 @@ class MinValidator extends AbstractValidatorDirective {
6071
6120
  /** @internal */
6072
6121
  this.createValidator = (min) => minValidator(min);
6073
6122
  }
6074
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6075
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "_enabled ? min : null" } }, providers: [MIN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6124
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "_enabled ? min : null" } }, providers: [MIN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6076
6125
  }
6077
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MinValidator, decorators: [{
6126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MinValidator, decorators: [{
6078
6127
  type: Directive,
6079
6128
  args: [{
6080
6129
  selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',
@@ -6135,10 +6184,10 @@ class RequiredValidator extends AbstractValidatorDirective {
6135
6184
  enabled(input) {
6136
6185
  return input;
6137
6186
  }
6138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6139
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: { required: "required" }, host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6188
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: { required: "required" }, host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6140
6189
  }
6141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: RequiredValidator, decorators: [{
6190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: RequiredValidator, decorators: [{
6142
6191
  type: Directive,
6143
6192
  args: [{
6144
6193
  selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',
@@ -6175,10 +6224,10 @@ class CheckboxRequiredValidator extends RequiredValidator {
6175
6224
  /** @internal */
6176
6225
  this.createValidator = (input) => requiredTrueValidator;
6177
6226
  }
6178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6179
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]", host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6228
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]", host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6180
6229
  }
6181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6182
6231
  type: Directive,
6183
6232
  args: [{
6184
6233
  selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',
@@ -6236,10 +6285,10 @@ class EmailValidator extends AbstractValidatorDirective {
6236
6285
  enabled(input) {
6237
6286
  return input;
6238
6287
  }
6239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6240
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6289
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6241
6290
  }
6242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: EmailValidator, decorators: [{
6291
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: EmailValidator, decorators: [{
6243
6292
  type: Directive,
6244
6293
  args: [{
6245
6294
  selector: '[email][formControlName],[email][formControl],[email][ngModel]',
@@ -6288,10 +6337,10 @@ class MinLengthValidator extends AbstractValidatorDirective {
6288
6337
  /** @internal */
6289
6338
  this.createValidator = (minlength) => minLengthValidator(minlength);
6290
6339
  }
6291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6292
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: { minlength: "minlength" }, host: { properties: { "attr.minlength": "_enabled ? minlength : null" } }, providers: [MIN_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6341
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: { minlength: "minlength" }, host: { properties: { "attr.minlength": "_enabled ? minlength : null" } }, providers: [MIN_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6293
6342
  }
6294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MinLengthValidator, decorators: [{
6343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MinLengthValidator, decorators: [{
6295
6344
  type: Directive,
6296
6345
  args: [{
6297
6346
  selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',
@@ -6341,10 +6390,10 @@ class MaxLengthValidator extends AbstractValidatorDirective {
6341
6390
  /** @internal */
6342
6391
  this.createValidator = (maxlength) => maxLengthValidator(maxlength);
6343
6392
  }
6344
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6345
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: { maxlength: "maxlength" }, host: { properties: { "attr.maxlength": "_enabled ? maxlength : null" } }, providers: [MAX_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6393
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6394
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: { maxlength: "maxlength" }, host: { properties: { "attr.maxlength": "_enabled ? maxlength : null" } }, providers: [MAX_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6346
6395
  }
6347
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MaxLengthValidator, decorators: [{
6396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: MaxLengthValidator, decorators: [{
6348
6397
  type: Directive,
6349
6398
  args: [{
6350
6399
  selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',
@@ -6396,10 +6445,10 @@ class PatternValidator extends AbstractValidatorDirective {
6396
6445
  /** @internal */
6397
6446
  this.createValidator = (input) => patternValidator(input);
6398
6447
  }
6399
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6400
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: { pattern: "pattern" }, host: { properties: { "attr.pattern": "_enabled ? pattern : null" } }, providers: [PATTERN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6449
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.3", type: PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: { pattern: "pattern" }, host: { properties: { "attr.pattern": "_enabled ? pattern : null" } }, providers: [PATTERN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6401
6450
  }
6402
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: PatternValidator, decorators: [{
6451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: PatternValidator, decorators: [{
6403
6452
  type: Directive,
6404
6453
  args: [{
6405
6454
  selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',
@@ -6444,8 +6493,8 @@ const REACTIVE_DRIVEN_DIRECTIVES = [
6444
6493
  * Internal module used for sharing directives between FormsModule and ReactiveFormsModule
6445
6494
  */
6446
6495
  class ɵInternalFormsSharedModule {
6447
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6448
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6496
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6497
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6449
6498
  NgSelectOption,
6450
6499
  ɵNgSelectMultipleOption,
6451
6500
  DefaultValueAccessor,
@@ -6484,9 +6533,9 @@ class ɵInternalFormsSharedModule {
6484
6533
  EmailValidator,
6485
6534
  MinValidator,
6486
6535
  MaxValidator] }); }
6487
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6536
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6488
6537
  }
6489
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6490
6539
  type: NgModule,
6491
6540
  args: [{
6492
6541
  declarations: SHARED_FORM_DIRECTIVES,
@@ -7140,10 +7189,10 @@ class FormBuilder {
7140
7189
  return this.control(controls);
7141
7190
  }
7142
7191
  }
7143
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7144
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7192
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7193
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7145
7194
  }
7146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormBuilder, decorators: [{
7195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormBuilder, decorators: [{
7147
7196
  type: Injectable,
7148
7197
  args: [{ providedIn: 'root' }]
7149
7198
  }] });
@@ -7155,10 +7204,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
7155
7204
  * @publicApi
7156
7205
  */
7157
7206
  class NonNullableFormBuilder {
7158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7159
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7208
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7160
7209
  }
7161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7162
7211
  type: Injectable,
7163
7212
  args: [{
7164
7213
  providedIn: 'root',
@@ -7184,10 +7233,10 @@ class UntypedFormBuilder extends FormBuilder {
7184
7233
  array(controlsConfig, validatorOrOpts, asyncValidator) {
7185
7234
  return super.array(controlsConfig, validatorOrOpts, asyncValidator);
7186
7235
  }
7187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7188
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7237
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7189
7238
  }
7190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7191
7240
  type: Injectable,
7192
7241
  args: [{ providedIn: 'root' }]
7193
7242
  }] });
@@ -7200,7 +7249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
7200
7249
  /**
7201
7250
  * @publicApi
7202
7251
  */
7203
- const VERSION = new Version('18.1.0-next.1');
7252
+ const VERSION = new Version('18.1.0-next.3');
7204
7253
 
7205
7254
  /**
7206
7255
  * Exports the required providers and directives for template-driven forms,
@@ -7231,11 +7280,11 @@ class FormsModule {
7231
7280
  ],
7232
7281
  };
7233
7282
  }
7234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7235
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7236
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7283
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7284
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7285
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7237
7286
  }
7238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: FormsModule, decorators: [{
7287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: FormsModule, decorators: [{
7239
7288
  type: NgModule,
7240
7289
  args: [{
7241
7290
  declarations: TEMPLATE_DRIVEN_DIRECTIVES,
@@ -7277,11 +7326,11 @@ class ReactiveFormsModule {
7277
7326
  ],
7278
7327
  };
7279
7328
  }
7280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7281
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.1", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7282
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7330
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0-next.3", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7331
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7283
7332
  }
7284
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.3", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7285
7334
  type: NgModule,
7286
7335
  args: [{
7287
7336
  declarations: [REACTIVE_DRIVEN_DIRECTIVES],