@angular/forms 18.0.0-next.1 → 18.0.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 (31) 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 +6 -6
  6. package/esm2022/src/directives/ng_form.mjs +3 -3
  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 +3 -3
  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/forms.mjs +2 -2
  24. package/esm2022/src/model/abstract_model.mjs +137 -129
  25. package/esm2022/src/model/form_array.mjs +3 -3
  26. package/esm2022/src/model/form_group.mjs +3 -3
  27. package/esm2022/src/version.mjs +1 -1
  28. package/fesm2022/forms.mjs +263 -256
  29. package/fesm2022/forms.mjs.map +1 -1
  30. package/index.d.ts +86 -2
  31. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.0.0-next.1
2
+ * @license Angular v18.0.0-next.3
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -7,7 +7,7 @@
7
7
  import * as i0 from '@angular/core';
8
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';
9
9
  import { ɵgetDOM } from '@angular/common';
10
- import { from, forkJoin } from 'rxjs';
10
+ import { from, forkJoin, Subject } from 'rxjs';
11
11
  import { map } from 'rxjs/operators';
12
12
 
13
13
  /**
@@ -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.0.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.0.0-next.1", type: BaseControlValueAccessor, ngImport: i0 }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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.0.0-next.3", type: BaseControlValueAccessor, ngImport: i0 }); }
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.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.0.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.0.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.0.0-next.1", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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.0.0-next.3", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.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.0.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.0.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.0.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.0.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.0.0-next.1", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.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.0.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.0.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.0.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.0.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.0.0-next.1", ngImport: i0, type: DefaultValueAccessor, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.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]',
@@ -1322,10 +1322,10 @@ class NgControlStatus extends AbstractControlStatus {
1322
1322
  constructor(cd) {
1323
1323
  super(cd);
1324
1324
  }
1325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1326
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
1325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1326
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
1327
1327
  }
1328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgControlStatus, decorators: [{
1328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgControlStatus, decorators: [{
1329
1329
  type: Directive,
1330
1330
  args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]
1331
1331
  }], ctorParameters: () => [{ type: NgControl, decorators: [{
@@ -1347,10 +1347,10 @@ class NgControlStatusGroup extends AbstractControlStatus {
1347
1347
  constructor(cd) {
1348
1348
  super(cd);
1349
1349
  }
1350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1351
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
1350
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1351
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
1352
1352
  }
1353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1354
1354
  type: Directive,
1355
1355
  args: [{
1356
1356
  selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',
@@ -1541,6 +1541,61 @@ const PENDING = 'PENDING';
1541
1541
  * @see {@link status}
1542
1542
  */
1543
1543
  const DISABLED = 'DISABLED';
1544
+ /**
1545
+ * Base class for every event sent by `AbstractControl.events()`
1546
+ *
1547
+ * @publicApi
1548
+ */
1549
+ class ControlEvent {
1550
+ }
1551
+ /**
1552
+ * Event fired when the value of a control changes.
1553
+ *
1554
+ * @publicApi
1555
+ */
1556
+ class ValueChangeEvent extends ControlEvent {
1557
+ constructor(value, source) {
1558
+ super();
1559
+ this.value = value;
1560
+ this.source = source;
1561
+ }
1562
+ }
1563
+ /**
1564
+ * Event fired when the control's pristine state changes (pristine <=> dirty).
1565
+ *
1566
+ * @publicApi
1567
+ */
1568
+ class PristineChangeEvent extends ControlEvent {
1569
+ constructor(pristine, source) {
1570
+ super();
1571
+ this.pristine = pristine;
1572
+ this.source = source;
1573
+ }
1574
+ }
1575
+ /**
1576
+ * Event fired when the control's touched status changes (touched <=> untouched).
1577
+ *
1578
+ * @publicApi
1579
+ */
1580
+ class TouchedChangeEvent extends ControlEvent {
1581
+ constructor(touched, source) {
1582
+ super();
1583
+ this.touched = touched;
1584
+ this.source = source;
1585
+ }
1586
+ }
1587
+ /**
1588
+ * Event fired when the control's status changes.
1589
+ *
1590
+ * @publicApi
1591
+ */
1592
+ class StatusChangeEvent extends ControlEvent {
1593
+ constructor(status, source) {
1594
+ super();
1595
+ this.status = status;
1596
+ this.source = source;
1597
+ }
1598
+ }
1544
1599
  /**
1545
1600
  * Gets validators from either an options object or given validators.
1546
1601
  */
@@ -1649,6 +1704,25 @@ class AbstractControl {
1649
1704
  * a `blur` event on it.
1650
1705
  */
1651
1706
  this.touched = false;
1707
+ /**
1708
+ * Exposed as observable, see below.
1709
+ *
1710
+ * @internal
1711
+ */
1712
+ this._events = new Subject();
1713
+ /**
1714
+ * A multicasting observable that emits an event every time the state of the control changes.
1715
+ * It emits for value, status, pristine or touched changes.
1716
+ *
1717
+ * **Note**: On value change, the emit happens right after a value of this control is updated. The
1718
+ * value of a parent control (for example if this FormControl is a part of a FormGroup) is updated
1719
+ * later, so accessing a value of a parent control (using the `value` property) from the callback
1720
+ * of this event might result in getting a value that has not been updated yet. Subscribe to the
1721
+ * `events` of the parent control instead.
1722
+ * For other event types, the events are emitted after the parent control has been updated.
1723
+ *
1724
+ */
1725
+ this.events = this._events.asObservable();
1652
1726
  /** @internal */
1653
1727
  this._onDisabledChange = [];
1654
1728
  this._assignValidators(validators);
@@ -1927,145 +2001,78 @@ class AbstractControl {
1927
2001
  clearAsyncValidators() {
1928
2002
  this.asyncValidator = null;
1929
2003
  }
1930
- /**
1931
- * Marks the control as `touched`. A control is touched by focus and
1932
- * blur events that do not change the value.
1933
- *
1934
- * @see {@link markAsUntouched()}
1935
- * @see {@link markAsDirty()}
1936
- * @see {@link markAsPristine()}
1937
- *
1938
- * @param opts Configuration options that determine how the control propagates changes
1939
- * and emits events after marking is applied.
1940
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
1941
- * marks all direct ancestors. Default is false.
1942
- */
1943
2004
  markAsTouched(opts = {}) {
2005
+ const changed = this.touched === false;
1944
2006
  this.touched = true;
2007
+ const sourceControl = opts.sourceControl ?? this;
1945
2008
  if (this._parent && !opts.onlySelf) {
1946
- this._parent.markAsTouched(opts);
2009
+ this._parent.markAsTouched({ ...opts, sourceControl });
2010
+ }
2011
+ if (changed && opts.emitEvent !== false) {
2012
+ this._events.next(new TouchedChangeEvent(true, sourceControl));
1947
2013
  }
1948
2014
  }
1949
2015
  /**
1950
2016
  * Marks the control and all its descendant controls as `touched`.
1951
2017
  * @see {@link markAsTouched()}
1952
2018
  */
1953
- markAllAsTouched() {
1954
- this.markAsTouched({ onlySelf: true });
1955
- this._forEachChild((control) => control.markAllAsTouched());
2019
+ markAllAsTouched(opts = {}) {
2020
+ this.markAsTouched({ onlySelf: true, emitEvent: opts.emitEvent, sourceControl: this });
2021
+ this._forEachChild((control) => control.markAllAsTouched(opts));
1956
2022
  }
1957
- /**
1958
- * Marks the control as `untouched`.
1959
- *
1960
- * If the control has any children, also marks all children as `untouched`
1961
- * and recalculates the `touched` status of all parent controls.
1962
- *
1963
- * @see {@link markAsTouched()}
1964
- * @see {@link markAsDirty()}
1965
- * @see {@link markAsPristine()}
1966
- *
1967
- * @param opts Configuration options that determine how the control propagates changes
1968
- * and emits events after the marking is applied.
1969
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
1970
- * marks all direct ancestors. Default is false.
1971
- */
1972
2023
  markAsUntouched(opts = {}) {
2024
+ const changed = this.touched === true;
1973
2025
  this.touched = false;
1974
2026
  this._pendingTouched = false;
2027
+ const sourceControl = opts.sourceControl ?? this;
1975
2028
  this._forEachChild((control) => {
1976
- control.markAsUntouched({ onlySelf: true });
2029
+ control.markAsUntouched({ onlySelf: true, emitEvent: opts.emitEvent, sourceControl });
1977
2030
  });
1978
2031
  if (this._parent && !opts.onlySelf) {
1979
- this._parent._updateTouched(opts);
2032
+ this._parent._updateTouched(opts, sourceControl);
2033
+ }
2034
+ if (changed && opts.emitEvent !== false) {
2035
+ this._events.next(new TouchedChangeEvent(false, sourceControl));
1980
2036
  }
1981
2037
  }
1982
- /**
1983
- * Marks the control as `dirty`. A control becomes dirty when
1984
- * the control's value is changed through the UI; compare `markAsTouched`.
1985
- *
1986
- * @see {@link markAsTouched()}
1987
- * @see {@link markAsUntouched()}
1988
- * @see {@link markAsPristine()}
1989
- *
1990
- * @param opts Configuration options that determine how the control propagates changes
1991
- * and emits events after marking is applied.
1992
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
1993
- * marks all direct ancestors. Default is false.
1994
- */
1995
2038
  markAsDirty(opts = {}) {
2039
+ const changed = this.pristine === true;
1996
2040
  this.pristine = false;
2041
+ const sourceControl = opts.sourceControl ?? this;
1997
2042
  if (this._parent && !opts.onlySelf) {
1998
- this._parent.markAsDirty(opts);
2043
+ this._parent.markAsDirty({ ...opts, sourceControl });
2044
+ }
2045
+ if (changed && opts.emitEvent !== false) {
2046
+ this._events.next(new PristineChangeEvent(false, sourceControl));
1999
2047
  }
2000
2048
  }
2001
- /**
2002
- * Marks the control as `pristine`.
2003
- *
2004
- * If the control has any children, marks all children as `pristine`,
2005
- * and recalculates the `pristine` status of all parent
2006
- * controls.
2007
- *
2008
- * @see {@link markAsTouched()}
2009
- * @see {@link markAsUntouched()}
2010
- * @see {@link markAsDirty()}
2011
- *
2012
- * @param opts Configuration options that determine how the control emits events after
2013
- * marking is applied.
2014
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
2015
- * marks all direct ancestors. Default is false.
2016
- */
2017
2049
  markAsPristine(opts = {}) {
2050
+ const changed = this.pristine === false;
2018
2051
  this.pristine = true;
2019
2052
  this._pendingDirty = false;
2053
+ const sourceControl = opts.sourceControl ?? this;
2020
2054
  this._forEachChild((control) => {
2021
- control.markAsPristine({ onlySelf: true });
2055
+ /** We don't propagate the source control downwards */
2056
+ control.markAsPristine({ onlySelf: true, emitEvent: opts.emitEvent });
2022
2057
  });
2023
2058
  if (this._parent && !opts.onlySelf) {
2024
- this._parent._updatePristine(opts);
2059
+ this._parent._updatePristine(opts, sourceControl);
2060
+ }
2061
+ if (changed && opts.emitEvent !== false) {
2062
+ this._events.next(new PristineChangeEvent(true, sourceControl));
2025
2063
  }
2026
2064
  }
2027
- /**
2028
- * Marks the control as `pending`.
2029
- *
2030
- * A control is pending while the control performs async validation.
2031
- *
2032
- * @see {@link AbstractControl.status}
2033
- *
2034
- * @param opts Configuration options that determine how the control propagates changes and
2035
- * emits events after marking is applied.
2036
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
2037
- * marks all direct ancestors. Default is false.
2038
- * * `emitEvent`: When true or not supplied (the default), the `statusChanges`
2039
- * observable emits an event with the latest status the control is marked pending.
2040
- * When false, no events are emitted.
2041
- *
2042
- */
2043
2065
  markAsPending(opts = {}) {
2044
2066
  this.status = PENDING;
2067
+ const sourceControl = opts.sourceControl ?? this;
2045
2068
  if (opts.emitEvent !== false) {
2069
+ this._events.next(new StatusChangeEvent(this.status, sourceControl));
2046
2070
  this.statusChanges.emit(this.status);
2047
2071
  }
2048
2072
  if (this._parent && !opts.onlySelf) {
2049
- this._parent.markAsPending(opts);
2073
+ this._parent.markAsPending({ ...opts, sourceControl });
2050
2074
  }
2051
2075
  }
2052
- /**
2053
- * Disables the control. This means the control is exempt from validation checks and
2054
- * excluded from the aggregate value of any parent. Its status is `DISABLED`.
2055
- *
2056
- * If the control has children, all children are also disabled.
2057
- *
2058
- * @see {@link AbstractControl.status}
2059
- *
2060
- * @param opts Configuration options that determine how the control propagates
2061
- * changes and emits events after the control is disabled.
2062
- * * `onlySelf`: When true, mark only this control. When false or not supplied,
2063
- * marks all direct ancestors. Default is false.
2064
- * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
2065
- * `valueChanges`
2066
- * observables emit events with the latest status and value when the control is disabled.
2067
- * When false, no events are emitted.
2068
- */
2069
2076
  disable(opts = {}) {
2070
2077
  // If parent has been marked artificially dirty we don't want to re-calculate the
2071
2078
  // parent's dirtiness based on the children.
@@ -2073,14 +2080,18 @@ class AbstractControl {
2073
2080
  this.status = DISABLED;
2074
2081
  this.errors = null;
2075
2082
  this._forEachChild((control) => {
2083
+ /** We don't propagate the source control downwards */
2076
2084
  control.disable({ ...opts, onlySelf: true });
2077
2085
  });
2078
2086
  this._updateValue();
2087
+ const sourceControl = opts.sourceControl ?? this;
2079
2088
  if (opts.emitEvent !== false) {
2089
+ this._events.next(new StatusChangeEvent(this.status, sourceControl));
2090
+ this._events.next(new ValueChangeEvent(this.value, sourceControl));
2080
2091
  this.valueChanges.emit(this.value);
2081
2092
  this.statusChanges.emit(this.status);
2082
2093
  }
2083
- this._updateAncestors({ ...opts, skipPristineCheck });
2094
+ this._updateAncestors({ ...opts, skipPristineCheck }, this);
2084
2095
  this._onDisabledChange.forEach((changeFn) => changeFn(true));
2085
2096
  }
2086
2097
  /**
@@ -2110,16 +2121,16 @@ class AbstractControl {
2110
2121
  control.enable({ ...opts, onlySelf: true });
2111
2122
  });
2112
2123
  this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });
2113
- this._updateAncestors({ ...opts, skipPristineCheck });
2124
+ this._updateAncestors({ ...opts, skipPristineCheck }, this);
2114
2125
  this._onDisabledChange.forEach((changeFn) => changeFn(false));
2115
2126
  }
2116
- _updateAncestors(opts) {
2127
+ _updateAncestors(opts, sourceControl) {
2117
2128
  if (this._parent && !opts.onlySelf) {
2118
2129
  this._parent.updateValueAndValidity(opts);
2119
2130
  if (!opts.skipPristineCheck) {
2120
- this._parent._updatePristine();
2131
+ this._parent._updatePristine({}, sourceControl);
2121
2132
  }
2122
- this._parent._updateTouched();
2133
+ this._parent._updateTouched({}, sourceControl);
2123
2134
  }
2124
2135
  }
2125
2136
  /**
@@ -2137,20 +2148,6 @@ class AbstractControl {
2137
2148
  getRawValue() {
2138
2149
  return this.value;
2139
2150
  }
2140
- /**
2141
- * Recalculates the value and validation status of the control.
2142
- *
2143
- * By default, it also updates the value and validity of its ancestors.
2144
- *
2145
- * @param opts Configuration options determine how the control propagates changes and emits events
2146
- * after updates and validity checks are applied.
2147
- * * `onlySelf`: When true, only update this control. When false or not supplied,
2148
- * update all direct ancestors. Default is false.
2149
- * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
2150
- * `valueChanges`
2151
- * observables emit events with the latest status and value when the control is updated.
2152
- * When false, no events are emitted.
2153
- */
2154
2151
  updateValueAndValidity(opts = {}) {
2155
2152
  this._setInitialStatus();
2156
2153
  this._updateValue();
@@ -2162,12 +2159,15 @@ class AbstractControl {
2162
2159
  this._runAsyncValidator(opts.emitEvent);
2163
2160
  }
2164
2161
  }
2162
+ const sourceControl = opts.sourceControl ?? this;
2165
2163
  if (opts.emitEvent !== false) {
2164
+ this._events.next(new ValueChangeEvent(this.value, sourceControl));
2165
+ this._events.next(new StatusChangeEvent(this.status, sourceControl));
2166
2166
  this.valueChanges.emit(this.value);
2167
2167
  this.statusChanges.emit(this.status);
2168
2168
  }
2169
2169
  if (this._parent && !opts.onlySelf) {
2170
- this._parent.updateValueAndValidity(opts);
2170
+ this._parent.updateValueAndValidity({ ...opts, sourceControl });
2171
2171
  }
2172
2172
  }
2173
2173
  /** @internal */
@@ -2231,7 +2231,7 @@ class AbstractControl {
2231
2231
  */
2232
2232
  setErrors(errors, opts = {}) {
2233
2233
  this.errors = errors;
2234
- this._updateControlsErrors(opts.emitEvent !== false);
2234
+ this._updateControlsErrors(opts.emitEvent !== false, this);
2235
2235
  }
2236
2236
  /**
2237
2237
  * Retrieves a child control given the control's name or path.
@@ -2348,13 +2348,14 @@ class AbstractControl {
2348
2348
  return x;
2349
2349
  }
2350
2350
  /** @internal */
2351
- _updateControlsErrors(emitEvent) {
2351
+ _updateControlsErrors(emitEvent, changedControl) {
2352
2352
  this.status = this._calculateStatus();
2353
2353
  if (emitEvent) {
2354
2354
  this.statusChanges.emit(this.status);
2355
+ this._events.next(new StatusChangeEvent(this.status, changedControl));
2355
2356
  }
2356
2357
  if (this._parent) {
2357
- this._parent._updateControlsErrors(emitEvent);
2358
+ this._parent._updateControlsErrors(emitEvent, changedControl);
2358
2359
  }
2359
2360
  }
2360
2361
  /** @internal */
@@ -2386,17 +2387,23 @@ class AbstractControl {
2386
2387
  return this._anyControls((control) => control.touched);
2387
2388
  }
2388
2389
  /** @internal */
2389
- _updatePristine(opts = {}) {
2390
- this.pristine = !this._anyControlsDirty();
2390
+ _updatePristine(opts, changedControl) {
2391
+ const newPristine = !this._anyControlsDirty();
2392
+ const changed = this.pristine !== newPristine;
2393
+ this.pristine = newPristine;
2391
2394
  if (this._parent && !opts.onlySelf) {
2392
- this._parent._updatePristine(opts);
2395
+ this._parent._updatePristine(opts, changedControl);
2396
+ }
2397
+ if (changed) {
2398
+ this._events.next(new PristineChangeEvent(this.pristine, changedControl));
2393
2399
  }
2394
2400
  }
2395
2401
  /** @internal */
2396
- _updateTouched(opts = {}) {
2402
+ _updateTouched(opts = {}, changedControl) {
2397
2403
  this.touched = this._anyControlsTouched();
2404
+ this._events.next(new TouchedChangeEvent(this.touched, changedControl));
2398
2405
  if (this._parent && !opts.onlySelf) {
2399
- this._parent._updateTouched(opts);
2406
+ this._parent._updateTouched(opts, changedControl);
2400
2407
  }
2401
2408
  }
2402
2409
  /** @internal */
@@ -2782,8 +2789,8 @@ class FormGroup extends AbstractControl {
2782
2789
  this._forEachChild((control, name) => {
2783
2790
  control.reset(value ? value[name] : null, { onlySelf: true, emitEvent: options.emitEvent });
2784
2791
  });
2785
- this._updatePristine(options);
2786
- this._updateTouched(options);
2792
+ this._updatePristine(options, this);
2793
+ this._updateTouched(options, this);
2787
2794
  this.updateValueAndValidity(options);
2788
2795
  }
2789
2796
  /**
@@ -3514,10 +3521,10 @@ class NgForm extends ControlContainer {
3514
3521
  path.pop();
3515
3522
  return path.length ? this.form.get(path) : this.form;
3516
3523
  }
3517
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
3518
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
3524
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
3525
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
3519
3526
  }
3520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgForm, decorators: [{
3527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgForm, decorators: [{
3521
3528
  type: Directive,
3522
3529
  args: [{
3523
3530
  selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',
@@ -3712,10 +3719,10 @@ class AbstractFormGroupDirective extends ControlContainer {
3712
3719
  }
3713
3720
  /** @internal */
3714
3721
  _checkParentType() { }
3715
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3716
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3723
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3717
3724
  }
3718
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3725
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3719
3726
  type: Directive
3720
3727
  }] });
3721
3728
 
@@ -3814,10 +3821,10 @@ class NgModelGroup extends AbstractFormGroupDirective {
3814
3821
  throw modelGroupParentException();
3815
3822
  }
3816
3823
  }
3817
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
3818
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3824
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
3825
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3819
3826
  }
3820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgModelGroup, decorators: [{
3827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgModelGroup, decorators: [{
3821
3828
  type: Directive,
3822
3829
  args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]
3823
3830
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -4093,10 +4100,10 @@ class NgModel extends NgControl {
4093
4100
  _getPath(controlName) {
4094
4101
  return this._parent ? controlPath(controlName, this._parent) : [controlName];
4095
4102
  }
4096
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4097
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4104
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4098
4105
  }
4099
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgModel, decorators: [{
4106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgModel, decorators: [{
4100
4107
  type: Directive,
4101
4108
  args: [{
4102
4109
  selector: '[ngModel]:not([formControlName]):not([formControl])',
@@ -4172,10 +4179,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1",
4172
4179
  * @ngModule FormsModule
4173
4180
  */
4174
4181
  class ɵNgNoValidate {
4175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4176
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4183
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4177
4184
  }
4178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4179
4186
  type: Directive,
4180
4187
  args: [{
4181
4188
  selector: 'form:not([ngNoForm]):not([ngNativeValidate])',
@@ -4231,10 +4238,10 @@ class NumberValueAccessor extends BuiltInControlValueAccessor {
4231
4238
  fn(value == '' ? null : parseFloat(value));
4232
4239
  };
4233
4240
  }
4234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4235
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4241
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4242
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4236
4243
  }
4237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NumberValueAccessor, decorators: [{
4244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NumberValueAccessor, decorators: [{
4238
4245
  type: Directive,
4239
4246
  args: [{
4240
4247
  selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',
@@ -4298,10 +4305,10 @@ class RadioControlRegistry {
4298
4305
  return controlPair[0]._parent === accessor._control._parent &&
4299
4306
  controlPair[1].name === accessor.name;
4300
4307
  }
4301
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4302
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4309
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4303
4310
  }
4304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RadioControlRegistry, decorators: [{
4311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RadioControlRegistry, decorators: [{
4305
4312
  type: Injectable,
4306
4313
  args: [{ providedIn: 'root' }]
4307
4314
  }] });
@@ -4412,10 +4419,10 @@ class RadioControlValueAccessor extends BuiltInControlValueAccessor {
4412
4419
  if (!this.name && this.formControlName)
4413
4420
  this.name = this.formControlName;
4414
4421
  }
4415
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4416
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4422
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4423
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4417
4424
  }
4418
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4419
4426
  type: Directive,
4420
4427
  args: [{
4421
4428
  selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',
@@ -4476,10 +4483,10 @@ class RangeValueAccessor extends BuiltInControlValueAccessor {
4476
4483
  fn(value == '' ? null : parseFloat(value));
4477
4484
  };
4478
4485
  }
4479
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4480
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4486
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4487
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4481
4488
  }
4482
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RangeValueAccessor, decorators: [{
4489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RangeValueAccessor, decorators: [{
4483
4490
  type: Directive,
4484
4491
  args: [{
4485
4492
  selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',
@@ -4610,10 +4617,10 @@ class FormControlDirective extends NgControl {
4610
4617
  _isControlChanged(changes) {
4611
4618
  return changes.hasOwnProperty('form');
4612
4619
  }
4613
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4614
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4620
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4621
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4615
4622
  }
4616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormControlDirective, decorators: [{
4623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormControlDirective, decorators: [{
4617
4624
  type: Directive,
4618
4625
  args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]
4619
4626
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -4956,10 +4963,10 @@ class FormGroupDirective extends ControlContainer {
4956
4963
  throw missingFormException();
4957
4964
  }
4958
4965
  }
4959
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4960
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4966
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
4967
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
4961
4968
  }
4962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormGroupDirective, decorators: [{
4969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormGroupDirective, decorators: [{
4963
4970
  type: Directive,
4964
4971
  args: [{
4965
4972
  selector: '[formGroup]',
@@ -5067,10 +5074,10 @@ class FormGroupName extends AbstractFormGroupDirective {
5067
5074
  throw groupParentException();
5068
5075
  }
5069
5076
  }
5070
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5071
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5077
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5078
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5072
5079
  }
5073
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormGroupName, decorators: [{
5080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormGroupName, decorators: [{
5074
5081
  type: Directive,
5075
5082
  args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]
5076
5083
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5187,10 +5194,10 @@ class FormArrayName extends ControlContainer {
5187
5194
  throw arrayParentException();
5188
5195
  }
5189
5196
  }
5190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5191
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5198
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5192
5199
  }
5193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormArrayName, decorators: [{
5200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormArrayName, decorators: [{
5194
5201
  type: Directive,
5195
5202
  args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]
5196
5203
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5368,10 +5375,10 @@ class FormControlName extends NgControl {
5368
5375
  this.control = this.formDirective.addControl(this);
5369
5376
  this._added = true;
5370
5377
  }
5371
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5372
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5378
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.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 }); }
5379
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5373
5380
  }
5374
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormControlName, decorators: [{
5381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormControlName, decorators: [{
5375
5382
  type: Directive,
5376
5383
  args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]
5377
5384
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5548,10 +5555,10 @@ class SelectControlValueAccessor extends BuiltInControlValueAccessor {
5548
5555
  const id = _extractId$1(valueString);
5549
5556
  return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
5550
5557
  }
5551
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5552
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5558
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5559
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5553
5560
  }
5554
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5561
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5555
5562
  type: Directive,
5556
5563
  args: [{
5557
5564
  selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',
@@ -5612,10 +5619,10 @@ class NgSelectOption {
5612
5619
  this._select.writeValue(this._select.value);
5613
5620
  }
5614
5621
  }
5615
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5616
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5622
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5623
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5617
5624
  }
5618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NgSelectOption, decorators: [{
5625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NgSelectOption, decorators: [{
5619
5626
  type: Directive,
5620
5627
  args: [{ selector: 'option' }]
5621
5628
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{
@@ -5779,10 +5786,10 @@ class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {
5779
5786
  const id = _extractId(valueString);
5780
5787
  return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;
5781
5788
  }
5782
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5783
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5790
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5784
5791
  }
5785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5786
5793
  type: Directive,
5787
5794
  args: [{
5788
5795
  selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',
@@ -5853,10 +5860,10 @@ class ɵNgSelectMultipleOption {
5853
5860
  this._select.writeValue(this._select.value);
5854
5861
  }
5855
5862
  }
5856
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5857
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5863
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5864
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5858
5865
  }
5859
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5866
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5860
5867
  type: Directive,
5861
5868
  args: [{ selector: 'option' }]
5862
5869
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{
@@ -5928,10 +5935,10 @@ class AbstractValidatorDirective {
5928
5935
  enabled(input) {
5929
5936
  return input != null /* both `null` and `undefined` */;
5930
5937
  }
5931
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5932
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
5938
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5939
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
5933
5940
  }
5934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
5941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
5935
5942
  type: Directive
5936
5943
  }] });
5937
5944
  /**
@@ -5974,10 +5981,10 @@ class MaxValidator extends AbstractValidatorDirective {
5974
5981
  /** @internal */
5975
5982
  this.createValidator = (max) => maxValidator(max);
5976
5983
  }
5977
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5978
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5985
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
5979
5986
  }
5980
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MaxValidator, decorators: [{
5987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MaxValidator, decorators: [{
5981
5988
  type: Directive,
5982
5989
  args: [{
5983
5990
  selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',
@@ -6027,10 +6034,10 @@ class MinValidator extends AbstractValidatorDirective {
6027
6034
  /** @internal */
6028
6035
  this.createValidator = (min) => minValidator(min);
6029
6036
  }
6030
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6031
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6037
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6038
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6032
6039
  }
6033
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MinValidator, decorators: [{
6040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MinValidator, decorators: [{
6034
6041
  type: Directive,
6035
6042
  args: [{
6036
6043
  selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',
@@ -6091,10 +6098,10 @@ class RequiredValidator extends AbstractValidatorDirective {
6091
6098
  enabled(input) {
6092
6099
  return input;
6093
6100
  }
6094
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6095
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6102
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6096
6103
  }
6097
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: RequiredValidator, decorators: [{
6104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: RequiredValidator, decorators: [{
6098
6105
  type: Directive,
6099
6106
  args: [{
6100
6107
  selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',
@@ -6131,10 +6138,10 @@ class CheckboxRequiredValidator extends RequiredValidator {
6131
6138
  /** @internal */
6132
6139
  this.createValidator = (input) => requiredTrueValidator;
6133
6140
  }
6134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6135
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6142
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6136
6143
  }
6137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6138
6145
  type: Directive,
6139
6146
  args: [{
6140
6147
  selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',
@@ -6192,10 +6199,10 @@ class EmailValidator extends AbstractValidatorDirective {
6192
6199
  enabled(input) {
6193
6200
  return input;
6194
6201
  }
6195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6196
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.1", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6203
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.3", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6197
6204
  }
6198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: EmailValidator, decorators: [{
6205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: EmailValidator, decorators: [{
6199
6206
  type: Directive,
6200
6207
  args: [{
6201
6208
  selector: '[email][formControlName],[email][formControl],[email][ngModel]',
@@ -6244,10 +6251,10 @@ class MinLengthValidator extends AbstractValidatorDirective {
6244
6251
  /** @internal */
6245
6252
  this.createValidator = (minlength) => minLengthValidator(minlength);
6246
6253
  }
6247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6248
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6255
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6249
6256
  }
6250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MinLengthValidator, decorators: [{
6257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MinLengthValidator, decorators: [{
6251
6258
  type: Directive,
6252
6259
  args: [{
6253
6260
  selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',
@@ -6297,10 +6304,10 @@ class MaxLengthValidator extends AbstractValidatorDirective {
6297
6304
  /** @internal */
6298
6305
  this.createValidator = (maxlength) => maxLengthValidator(maxlength);
6299
6306
  }
6300
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6301
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6308
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6302
6309
  }
6303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: MaxLengthValidator, decorators: [{
6310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: MaxLengthValidator, decorators: [{
6304
6311
  type: Directive,
6305
6312
  args: [{
6306
6313
  selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',
@@ -6352,10 +6359,10 @@ class PatternValidator extends AbstractValidatorDirective {
6352
6359
  /** @internal */
6353
6360
  this.createValidator = (input) => patternValidator(input);
6354
6361
  }
6355
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6356
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6362
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6363
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 }); }
6357
6364
  }
6358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: PatternValidator, decorators: [{
6365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: PatternValidator, decorators: [{
6359
6366
  type: Directive,
6360
6367
  args: [{
6361
6368
  selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',
@@ -6394,8 +6401,8 @@ const REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, Fo
6394
6401
  * Internal module used for sharing directives between FormsModule and ReactiveFormsModule
6395
6402
  */
6396
6403
  class ɵInternalFormsSharedModule {
6397
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6398
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6404
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6405
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6399
6406
  NgSelectOption,
6400
6407
  ɵNgSelectMultipleOption,
6401
6408
  DefaultValueAccessor,
@@ -6434,9 +6441,9 @@ class ɵInternalFormsSharedModule {
6434
6441
  EmailValidator,
6435
6442
  MinValidator,
6436
6443
  MaxValidator] }); }
6437
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6444
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6438
6445
  }
6439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6440
6447
  type: NgModule,
6441
6448
  args: [{
6442
6449
  declarations: SHARED_FORM_DIRECTIVES,
@@ -6779,8 +6786,8 @@ class FormArray extends AbstractControl {
6779
6786
  this._forEachChild((control, index) => {
6780
6787
  control.reset(value[index], { onlySelf: true, emitEvent: options.emitEvent });
6781
6788
  });
6782
- this._updatePristine(options);
6783
- this._updateTouched(options);
6789
+ this._updatePristine(options, this);
6790
+ this._updateTouched(options, this);
6784
6791
  this.updateValueAndValidity(options);
6785
6792
  }
6786
6793
  /**
@@ -7088,10 +7095,10 @@ class FormBuilder {
7088
7095
  return this.control(controls);
7089
7096
  }
7090
7097
  }
7091
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7092
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7098
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7099
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7093
7100
  }
7094
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormBuilder, decorators: [{
7101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormBuilder, decorators: [{
7095
7102
  type: Injectable,
7096
7103
  args: [{ providedIn: 'root' }]
7097
7104
  }] });
@@ -7103,10 +7110,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1",
7103
7110
  * @publicApi
7104
7111
  */
7105
7112
  class NonNullableFormBuilder {
7106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7107
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7113
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7114
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7108
7115
  }
7109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7110
7117
  type: Injectable,
7111
7118
  args: [{
7112
7119
  providedIn: 'root',
@@ -7132,10 +7139,10 @@ class UntypedFormBuilder extends FormBuilder {
7132
7139
  array(controlsConfig, validatorOrOpts, asyncValidator) {
7133
7140
  return super.array(controlsConfig, validatorOrOpts, asyncValidator);
7134
7141
  }
7135
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7136
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7143
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7137
7144
  }
7138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7139
7146
  type: Injectable,
7140
7147
  args: [{ providedIn: 'root' }]
7141
7148
  }] });
@@ -7148,7 +7155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1",
7148
7155
  /**
7149
7156
  * @publicApi
7150
7157
  */
7151
- const VERSION = new Version('18.0.0-next.1');
7158
+ const VERSION = new Version('18.0.0-next.3');
7152
7159
 
7153
7160
  /**
7154
7161
  * Exports the required providers and directives for template-driven forms,
@@ -7177,11 +7184,11 @@ class FormsModule {
7177
7184
  }]
7178
7185
  };
7179
7186
  }
7180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7181
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7182
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7188
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7189
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7183
7190
  }
7184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: FormsModule, decorators: [{
7191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: FormsModule, decorators: [{
7185
7192
  type: NgModule,
7186
7193
  args: [{
7187
7194
  declarations: TEMPLATE_DRIVEN_DIRECTIVES,
@@ -7223,11 +7230,11 @@ class ReactiveFormsModule {
7223
7230
  ]
7224
7231
  };
7225
7232
  }
7226
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7227
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.1", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7228
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7234
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.3", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7235
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7229
7236
  }
7230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.3", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7231
7238
  type: NgModule,
7232
7239
  args: [{
7233
7240
  declarations: [REACTIVE_DRIVEN_DIRECTIVES],
@@ -7259,5 +7266,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.1",
7259
7266
  * Generated bundle index. Do not edit.
7260
7267
  */
7261
7268
 
7262
- export { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };
7269
+ export { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, ControlEvent, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, PristineChangeEvent as PristineEvent, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, StatusChangeEvent as StatusEvent, TouchedChangeEvent as TouchedEvent, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, ValueChangeEvent, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };
7263
7270
  //# sourceMappingURL=forms.mjs.map