@angular/forms 18.0.0-rc.1 → 18.0.0-rc.2

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 (29) 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 +7 -4
  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 +10 -11
  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 +70 -49
  25. package/esm2022/src/version.mjs +1 -1
  26. package/fesm2022/forms.mjs +194 -172
  27. package/fesm2022/forms.mjs.map +1 -1
  28. package/index.d.ts +39 -1
  29. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v18.0.0-rc.1
2
+ * @license Angular v18.0.0-rc.2
3
3
  * (c) 2010-2024 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -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-rc.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-rc.1", type: BaseControlValueAccessor, ngImport: i0 }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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-rc.2", type: BaseControlValueAccessor, ngImport: i0 }); }
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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-rc.1", ng
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-rc.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-rc.1", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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-rc.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-rc.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-rc.2", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
133
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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-rc.1", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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-rc.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-rc.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-rc.2", 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-rc.2", 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-rc.1", ngImport: i0, type: DefaultValueAccessor, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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]',
@@ -1324,10 +1324,10 @@ class NgControlStatus extends AbstractControlStatus {
1324
1324
  constructor(cd) {
1325
1325
  super(cd);
1326
1326
  }
1327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1328
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
1327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1328
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: NgControlStatus, selector: "[formControlName],[ngModel],[formControl]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending" } }, usesInheritance: true, ngImport: i0 }); }
1329
1329
  }
1330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgControlStatus, decorators: [{
1330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgControlStatus, decorators: [{
1331
1331
  type: Directive,
1332
1332
  args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]
1333
1333
  }], ctorParameters: () => [{ type: NgControl, decorators: [{
@@ -1349,10 +1349,10 @@ class NgControlStatusGroup extends AbstractControlStatus {
1349
1349
  constructor(cd) {
1350
1350
  super(cd);
1351
1351
  }
1352
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1353
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
1352
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1353
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending", "class.ng-submitted": "isSubmitted" } }, usesInheritance: true, ngImport: i0 }); }
1354
1354
  }
1355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgControlStatusGroup, decorators: [{
1356
1356
  type: Directive,
1357
1357
  args: [{
1358
1358
  selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',
@@ -1572,11 +1572,9 @@ class ValueChangeEvent extends ControlEvent {
1572
1572
  }
1573
1573
  }
1574
1574
  /**
1575
- * Event fired when the control's pristine state changes (pristine <=> dirty).
1576
- *
1577
- * @publicApi
1575
+ * @deprecated use `PristineChangeEvent` symbol instead.
1578
1576
  */
1579
- class PristineChangeEvent extends ControlEvent {
1577
+ class PristineEvent extends ControlEvent {
1580
1578
  constructor(pristine, source) {
1581
1579
  super();
1582
1580
  this.pristine = pristine;
@@ -1584,11 +1582,16 @@ class PristineChangeEvent extends ControlEvent {
1584
1582
  }
1585
1583
  }
1586
1584
  /**
1587
- * Event fired when the control's touched status changes (touched <=> untouched).
1585
+ * Event fired when the control's pristine state changes (pristine <=> dirty).
1588
1586
  *
1589
1587
  * @publicApi
1590
1588
  */
1591
- class TouchedChangeEvent extends ControlEvent {
1589
+ class PristineChangeEvent extends PristineEvent {
1590
+ }
1591
+ /**
1592
+ * @deprecated use `TouchedChangeEvent` symbol instead.
1593
+ */
1594
+ class TouchedEvent extends ControlEvent {
1592
1595
  constructor(touched, source) {
1593
1596
  super();
1594
1597
  this.touched = touched;
@@ -1596,17 +1599,51 @@ class TouchedChangeEvent extends ControlEvent {
1596
1599
  }
1597
1600
  }
1598
1601
  /**
1599
- * Event fired when the control's status changes.
1602
+ * Event fired when the control's touched status changes (touched <=> untouched).
1600
1603
  *
1601
1604
  * @publicApi
1602
1605
  */
1603
- class StatusChangeEvent extends ControlEvent {
1606
+ class TouchedChangeEvent extends TouchedEvent {
1607
+ }
1608
+ /**
1609
+ * @deprecated use `StatusChangeEvent` symbol instead.
1610
+ */
1611
+ class StatusEvent extends ControlEvent {
1604
1612
  constructor(status, source) {
1605
1613
  super();
1606
1614
  this.status = status;
1607
1615
  this.source = source;
1608
1616
  }
1609
1617
  }
1618
+ /**
1619
+ * Event fired when the control's status changes.
1620
+ *
1621
+ * @publicApi
1622
+ */
1623
+ class StatusChangeEvent extends StatusEvent {
1624
+ }
1625
+ /**
1626
+ * Event fired when a form is submitted
1627
+ *
1628
+ * @publicApi
1629
+ */
1630
+ class FormSubmittedEvent extends ControlEvent {
1631
+ constructor(source) {
1632
+ super();
1633
+ this.source = source;
1634
+ }
1635
+ }
1636
+ /**
1637
+ * Event fired when a form is reset.
1638
+ *
1639
+ * @publicApi
1640
+ */
1641
+ class FormResetEvent extends ControlEvent {
1642
+ constructor(source) {
1643
+ super();
1644
+ this.source = source;
1645
+ }
1646
+ }
1610
1647
  /**
1611
1648
  * Gets validators from either an options object or given validators.
1612
1649
  */
@@ -1660,7 +1697,6 @@ function assertAllValuesPresent(control, isGroup, value) {
1660
1697
  }
1661
1698
  });
1662
1699
  }
1663
- // clang-format on
1664
1700
  /**
1665
1701
  * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.
1666
1702
  *
@@ -1692,10 +1728,11 @@ class AbstractControl {
1692
1728
  this._pendingDirty = false;
1693
1729
  /**
1694
1730
  * Indicates that a control has its own pending asynchronous validation in progress.
1731
+ * It also stores if the control should emit events when the validation status changes.
1695
1732
  *
1696
1733
  * @internal
1697
1734
  */
1698
- this._hasOwnPendingAsyncValidator = false;
1735
+ this._hasOwnPendingAsyncValidator = null;
1699
1736
  /** @internal */
1700
1737
  this._pendingTouched = false;
1701
1738
  /** @internal */
@@ -2170,11 +2207,13 @@ class AbstractControl {
2170
2207
  this._setInitialStatus();
2171
2208
  this._updateValue();
2172
2209
  if (this.enabled) {
2173
- this._cancelExistingSubscription();
2210
+ const shouldHaveEmitted = this._cancelExistingSubscription();
2174
2211
  this.errors = this._runValidator();
2175
2212
  this.status = this._calculateStatus();
2176
2213
  if (this.status === VALID || this.status === PENDING) {
2177
- this._runAsyncValidator(opts.emitEvent);
2214
+ // If the canceled subscription should have emitted
2215
+ // we make sure the async validator emits the status change on completion
2216
+ this._runAsyncValidator(shouldHaveEmitted, opts.emitEvent);
2178
2217
  }
2179
2218
  }
2180
2219
  const sourceControl = opts.sourceControl ?? this;
@@ -2199,57 +2238,34 @@ class AbstractControl {
2199
2238
  _runValidator() {
2200
2239
  return this.validator ? this.validator(this) : null;
2201
2240
  }
2202
- _runAsyncValidator(emitEvent) {
2241
+ _runAsyncValidator(shouldHaveEmitted, emitEvent) {
2203
2242
  if (this.asyncValidator) {
2204
2243
  this.status = PENDING;
2205
- this._hasOwnPendingAsyncValidator = true;
2244
+ this._hasOwnPendingAsyncValidator = { emitEvent: emitEvent !== false };
2206
2245
  const obs = toObservable(this.asyncValidator(this));
2207
2246
  this._asyncValidationSubscription = obs.subscribe((errors) => {
2208
- this._hasOwnPendingAsyncValidator = false;
2247
+ this._hasOwnPendingAsyncValidator = null;
2209
2248
  // This will trigger the recalculation of the validation status, which depends on
2210
2249
  // the state of the asynchronous validation (whether it is in progress or not). So, it is
2211
2250
  // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.
2212
- this.setErrors(errors, { emitEvent });
2251
+ this.setErrors(errors, { emitEvent, shouldHaveEmitted });
2213
2252
  });
2214
2253
  }
2215
2254
  }
2216
2255
  _cancelExistingSubscription() {
2217
2256
  if (this._asyncValidationSubscription) {
2218
2257
  this._asyncValidationSubscription.unsubscribe();
2219
- this._hasOwnPendingAsyncValidator = false;
2258
+ // we're cancelling the validator subscribtion, we keep if it should have emitted
2259
+ // because we want to emit eventually if it was required at least once.
2260
+ const shouldHaveEmitted = this._hasOwnPendingAsyncValidator?.emitEvent ?? false;
2261
+ this._hasOwnPendingAsyncValidator = null;
2262
+ return shouldHaveEmitted;
2220
2263
  }
2264
+ return false;
2221
2265
  }
2222
- /**
2223
- * Sets errors on a form control when running validations manually, rather than automatically.
2224
- *
2225
- * Calling `setErrors` also updates the validity of the parent control.
2226
- *
2227
- * @param opts Configuration options that determine how the control propagates
2228
- * changes and emits events after the control errors are set.
2229
- * * `emitEvent`: When true or not supplied (the default), the `statusChanges`
2230
- * observable emits an event after the errors are set.
2231
- *
2232
- * @usageNotes
2233
- *
2234
- * ### Manually set the errors for a control
2235
- *
2236
- * ```
2237
- * const login = new FormControl('someLogin');
2238
- * login.setErrors({
2239
- * notUnique: true
2240
- * });
2241
- *
2242
- * expect(login.valid).toEqual(false);
2243
- * expect(login.errors).toEqual({ notUnique: true });
2244
- *
2245
- * login.setValue('someOtherLogin');
2246
- *
2247
- * expect(login.valid).toEqual(true);
2248
- * ```
2249
- */
2250
2266
  setErrors(errors, opts = {}) {
2251
2267
  this.errors = errors;
2252
- this._updateControlsErrors(opts.emitEvent !== false, this);
2268
+ this._updateControlsErrors(opts.emitEvent !== false, this, opts.shouldHaveEmitted);
2253
2269
  }
2254
2270
  /**
2255
2271
  * Retrieves a child control given the control's name or path.
@@ -2366,14 +2382,19 @@ class AbstractControl {
2366
2382
  return x;
2367
2383
  }
2368
2384
  /** @internal */
2369
- _updateControlsErrors(emitEvent, changedControl) {
2385
+ _updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted) {
2370
2386
  this.status = this._calculateStatus();
2371
2387
  if (emitEvent) {
2372
2388
  this.statusChanges.emit(this.status);
2389
+ }
2390
+ // The Events Observable expose a slight different bevahior than the statusChanges obs
2391
+ // An async validator will still emit a StatusChangeEvent is a previously cancelled
2392
+ // async validator has emitEvent set to true
2393
+ if (emitEvent || shouldHaveEmitted) {
2373
2394
  this._events.next(new StatusChangeEvent(this.status, changedControl));
2374
2395
  }
2375
2396
  if (this._parent) {
2376
- this._parent._updateControlsErrors(emitEvent, changedControl);
2397
+ this._parent._updateControlsErrors(emitEvent, changedControl, shouldHaveEmitted);
2377
2398
  }
2378
2399
  }
2379
2400
  /** @internal */
@@ -3546,10 +3567,10 @@ class NgForm extends ControlContainer {
3546
3567
  path.pop();
3547
3568
  return path.length ? this.form.get(path) : this.form;
3548
3569
  }
3549
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
3550
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
3570
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
3571
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
3551
3572
  }
3552
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgForm, decorators: [{
3573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgForm, decorators: [{
3553
3574
  type: Directive,
3554
3575
  args: [{
3555
3576
  selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',
@@ -3748,10 +3769,10 @@ class AbstractFormGroupDirective extends ControlContainer {
3748
3769
  }
3749
3770
  /** @internal */
3750
3771
  _checkParentType() { }
3751
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3752
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3772
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3773
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
3753
3774
  }
3754
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
3755
3776
  type: Directive
3756
3777
  }] });
3757
3778
 
@@ -3851,10 +3872,10 @@ class NgModelGroup extends AbstractFormGroupDirective {
3851
3872
  throw modelGroupParentException();
3852
3873
  }
3853
3874
  }
3854
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
3855
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3875
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
3876
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
3856
3877
  }
3857
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgModelGroup, decorators: [{
3878
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgModelGroup, decorators: [{
3858
3879
  type: Directive,
3859
3880
  args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]
3860
3881
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -4130,10 +4151,10 @@ class NgModel extends NgControl {
4130
4151
  _getPath(controlName) {
4131
4152
  return this._parent ? controlPath(controlName, this._parent) : [controlName];
4132
4153
  }
4133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
4134
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
4154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
4155
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4135
4156
  }
4136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgModel, decorators: [{
4157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgModel, decorators: [{
4137
4158
  type: Directive,
4138
4159
  args: [{
4139
4160
  selector: '[ngModel]:not([formControlName]):not([formControl])',
@@ -4209,10 +4230,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ng
4209
4230
  * @ngModule FormsModule
4210
4231
  */
4211
4232
  class ɵNgNoValidate {
4212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4213
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4234
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
4214
4235
  }
4215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵNgNoValidate, decorators: [{
4216
4237
  type: Directive,
4217
4238
  args: [{
4218
4239
  selector: 'form:not([ngNoForm]):not([ngNativeValidate])',
@@ -4268,10 +4289,10 @@ class NumberValueAccessor extends BuiltInControlValueAccessor {
4268
4289
  fn(value == '' ? null : parseFloat(value));
4269
4290
  };
4270
4291
  }
4271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4272
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
4292
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4293
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4273
4294
  }
4274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NumberValueAccessor, decorators: [{
4295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NumberValueAccessor, decorators: [{
4275
4296
  type: Directive,
4276
4297
  args: [{
4277
4298
  selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',
@@ -4334,10 +4355,10 @@ class RadioControlRegistry {
4334
4355
  return false;
4335
4356
  return (controlPair[0]._parent === accessor._control._parent && controlPair[1].name === accessor.name);
4336
4357
  }
4337
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4338
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4358
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4359
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
4339
4360
  }
4340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RadioControlRegistry, decorators: [{
4361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RadioControlRegistry, decorators: [{
4341
4362
  type: Injectable,
4342
4363
  args: [{ providedIn: 'root' }]
4343
4364
  }] });
@@ -4451,10 +4472,10 @@ class RadioControlValueAccessor extends BuiltInControlValueAccessor {
4451
4472
  if (!this.name && this.formControlName)
4452
4473
  this.name = this.formControlName;
4453
4474
  }
4454
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4455
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
4475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
4476
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4456
4477
  }
4457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
4458
4479
  type: Directive,
4459
4480
  args: [{
4460
4481
  selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',
@@ -4515,10 +4536,10 @@ class RangeValueAccessor extends BuiltInControlValueAccessor {
4515
4536
  fn(value == '' ? null : parseFloat(value));
4516
4537
  };
4517
4538
  }
4518
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4519
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
4539
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
4540
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4520
4541
  }
4521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RangeValueAccessor, decorators: [{
4542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RangeValueAccessor, decorators: [{
4522
4543
  type: Directive,
4523
4544
  args: [{
4524
4545
  selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',
@@ -4648,10 +4669,10 @@ class FormControlDirective extends NgControl {
4648
4669
  _isControlChanged(changes) {
4649
4670
  return changes.hasOwnProperty('form');
4650
4671
  }
4651
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
4652
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
4672
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
4673
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4653
4674
  }
4654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormControlDirective, decorators: [{
4675
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormControlDirective, decorators: [{
4655
4676
  type: Directive,
4656
4677
  args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]
4657
4678
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -4912,6 +4933,7 @@ class FormGroupDirective extends ControlContainer {
4912
4933
  this.submitted = true;
4913
4934
  syncPendingControls(this.form, this.directives);
4914
4935
  this.ngSubmit.emit($event);
4936
+ this.form._events.next(new FormSubmittedEvent(this.control));
4915
4937
  // Forms with `method="dialog"` have some special behavior that won't reload the page and that
4916
4938
  // shouldn't be prevented. Note that we need to null check the `event` and the `target`, because
4917
4939
  // some internal apps call this method directly with the wrong arguments.
@@ -4933,6 +4955,7 @@ class FormGroupDirective extends ControlContainer {
4933
4955
  resetForm(value = undefined) {
4934
4956
  this.form.reset(value);
4935
4957
  this.submitted = false;
4958
+ this.form._events.next(new FormResetEvent(this.form));
4936
4959
  }
4937
4960
  /** @internal */
4938
4961
  _updateDomValue() {
@@ -4994,10 +5017,10 @@ class FormGroupDirective extends ControlContainer {
4994
5017
  throw missingFormException();
4995
5018
  }
4996
5019
  }
4997
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
4998
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
5020
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
5021
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
4999
5022
  }
5000
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormGroupDirective, decorators: [{
5023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormGroupDirective, decorators: [{
5001
5024
  type: Directive,
5002
5025
  args: [{
5003
5026
  selector: '[formGroup]',
@@ -5105,10 +5128,10 @@ class FormGroupName extends AbstractFormGroupDirective {
5105
5128
  throw groupParentException();
5106
5129
  }
5107
5130
  }
5108
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
5109
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
5132
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
5110
5133
  }
5111
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormGroupName, decorators: [{
5134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormGroupName, decorators: [{
5112
5135
  type: Directive,
5113
5136
  args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]
5114
5137
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5225,10 +5248,10 @@ class FormArrayName extends ControlContainer {
5225
5248
  throw arrayParentException();
5226
5249
  }
5227
5250
  }
5228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
5229
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5251
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
5252
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
5230
5253
  }
5231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormArrayName, decorators: [{
5254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormArrayName, decorators: [{
5232
5255
  type: Directive,
5233
5256
  args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]
5234
5257
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5405,10 +5428,10 @@ class FormControlName extends NgControl {
5405
5428
  this.control = this.formDirective.addControl(this);
5406
5429
  this._added = true;
5407
5430
  }
5408
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.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 }); }
5409
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
5431
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", 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 }); }
5432
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
5410
5433
  }
5411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormControlName, decorators: [{
5434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormControlName, decorators: [{
5412
5435
  type: Directive,
5413
5436
  args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]
5414
5437
  }], ctorParameters: () => [{ type: ControlContainer, decorators: [{
@@ -5585,10 +5608,10 @@ class SelectControlValueAccessor extends BuiltInControlValueAccessor {
5585
5608
  const id = _extractId$1(valueString);
5586
5609
  return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
5587
5610
  }
5588
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5589
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
5611
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5612
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
5590
5613
  }
5591
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
5592
5615
  type: Directive,
5593
5616
  args: [{
5594
5617
  selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',
@@ -5649,10 +5672,10 @@ class NgSelectOption {
5649
5672
  this._select.writeValue(this._select.value);
5650
5673
  }
5651
5674
  }
5652
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5653
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5676
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5654
5677
  }
5655
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NgSelectOption, decorators: [{
5678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NgSelectOption, decorators: [{
5656
5679
  type: Directive,
5657
5680
  args: [{ selector: 'option' }]
5658
5681
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{
@@ -5816,10 +5839,10 @@ class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {
5816
5839
  const id = _extractId(valueString);
5817
5840
  return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;
5818
5841
  }
5819
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5820
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
5842
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
5843
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
5821
5844
  }
5822
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
5823
5846
  type: Directive,
5824
5847
  args: [{
5825
5848
  selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',
@@ -5890,10 +5913,10 @@ class ɵNgSelectMultipleOption {
5890
5913
  this._select.writeValue(this._select.value);
5891
5914
  }
5892
5915
  }
5893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5894
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5916
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
5917
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
5895
5918
  }
5896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
5897
5920
  type: Directive,
5898
5921
  args: [{ selector: 'option' }]
5899
5922
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{
@@ -5965,10 +5988,10 @@ class AbstractValidatorDirective {
5965
5988
  enabled(input) {
5966
5989
  return input != null /* both `null` and `undefined` */;
5967
5990
  }
5968
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5969
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
5991
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5992
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
5970
5993
  }
5971
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
5994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
5972
5995
  type: Directive
5973
5996
  }] });
5974
5997
  /**
@@ -6011,10 +6034,10 @@ class MaxValidator extends AbstractValidatorDirective {
6011
6034
  /** @internal */
6012
6035
  this.createValidator = (max) => maxValidator(max);
6013
6036
  }
6014
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6015
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6037
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6038
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6016
6039
  }
6017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MaxValidator, decorators: [{
6040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MaxValidator, decorators: [{
6018
6041
  type: Directive,
6019
6042
  args: [{
6020
6043
  selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',
@@ -6064,10 +6087,10 @@ class MinValidator extends AbstractValidatorDirective {
6064
6087
  /** @internal */
6065
6088
  this.createValidator = (min) => minValidator(min);
6066
6089
  }
6067
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6068
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6090
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6091
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6069
6092
  }
6070
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MinValidator, decorators: [{
6093
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MinValidator, decorators: [{
6071
6094
  type: Directive,
6072
6095
  args: [{
6073
6096
  selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',
@@ -6128,10 +6151,10 @@ class RequiredValidator extends AbstractValidatorDirective {
6128
6151
  enabled(input) {
6129
6152
  return input;
6130
6153
  }
6131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6132
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6155
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6133
6156
  }
6134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: RequiredValidator, decorators: [{
6157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: RequiredValidator, decorators: [{
6135
6158
  type: Directive,
6136
6159
  args: [{
6137
6160
  selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',
@@ -6168,10 +6191,10 @@ class CheckboxRequiredValidator extends RequiredValidator {
6168
6191
  /** @internal */
6169
6192
  this.createValidator = (input) => requiredTrueValidator;
6170
6193
  }
6171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6172
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6195
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6173
6196
  }
6174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
6175
6198
  type: Directive,
6176
6199
  args: [{
6177
6200
  selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',
@@ -6229,10 +6252,10 @@ class EmailValidator extends AbstractValidatorDirective {
6229
6252
  enabled(input) {
6230
6253
  return input;
6231
6254
  }
6232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6233
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.1", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6256
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
6234
6257
  }
6235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: EmailValidator, decorators: [{
6258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: EmailValidator, decorators: [{
6236
6259
  type: Directive,
6237
6260
  args: [{
6238
6261
  selector: '[email][formControlName],[email][formControl],[email][ngModel]',
@@ -6281,10 +6304,10 @@ class MinLengthValidator extends AbstractValidatorDirective {
6281
6304
  /** @internal */
6282
6305
  this.createValidator = (minlength) => minLengthValidator(minlength);
6283
6306
  }
6284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6285
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6308
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6286
6309
  }
6287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MinLengthValidator, decorators: [{
6310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MinLengthValidator, decorators: [{
6288
6311
  type: Directive,
6289
6312
  args: [{
6290
6313
  selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',
@@ -6334,10 +6357,10 @@ class MaxLengthValidator extends AbstractValidatorDirective {
6334
6357
  /** @internal */
6335
6358
  this.createValidator = (maxlength) => maxLengthValidator(maxlength);
6336
6359
  }
6337
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6338
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6360
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6361
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6339
6362
  }
6340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: MaxLengthValidator, decorators: [{
6363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: MaxLengthValidator, decorators: [{
6341
6364
  type: Directive,
6342
6365
  args: [{
6343
6366
  selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',
@@ -6389,10 +6412,10 @@ class PatternValidator extends AbstractValidatorDirective {
6389
6412
  /** @internal */
6390
6413
  this.createValidator = (input) => patternValidator(input);
6391
6414
  }
6392
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6393
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.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 }); }
6415
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
6416
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-rc.2", 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 }); }
6394
6417
  }
6395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: PatternValidator, decorators: [{
6418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: PatternValidator, decorators: [{
6396
6419
  type: Directive,
6397
6420
  args: [{
6398
6421
  selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',
@@ -6437,8 +6460,8 @@ const REACTIVE_DRIVEN_DIRECTIVES = [
6437
6460
  * Internal module used for sharing directives between FormsModule and ReactiveFormsModule
6438
6461
  */
6439
6462
  class ɵInternalFormsSharedModule {
6440
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6441
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6463
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6464
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
6442
6465
  NgSelectOption,
6443
6466
  ɵNgSelectMultipleOption,
6444
6467
  DefaultValueAccessor,
@@ -6477,9 +6500,9 @@ class ɵInternalFormsSharedModule {
6477
6500
  EmailValidator,
6478
6501
  MinValidator,
6479
6502
  MaxValidator] }); }
6480
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6503
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵInternalFormsSharedModule }); }
6481
6504
  }
6482
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
6483
6506
  type: NgModule,
6484
6507
  args: [{
6485
6508
  declarations: SHARED_FORM_DIRECTIVES,
@@ -6946,7 +6969,6 @@ function isAbstractControlOptions(options) {
6946
6969
  options.validators !== undefined ||
6947
6970
  options.updateOn !== undefined));
6948
6971
  }
6949
- // clang-format on
6950
6972
  /**
6951
6973
  * @description
6952
6974
  * Creates an `AbstractControl` from a user-specified configuration.
@@ -7134,10 +7156,10 @@ class FormBuilder {
7134
7156
  return this.control(controls);
7135
7157
  }
7136
7158
  }
7137
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7138
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7160
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
7139
7161
  }
7140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormBuilder, decorators: [{
7162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormBuilder, decorators: [{
7141
7163
  type: Injectable,
7142
7164
  args: [{ providedIn: 'root' }]
7143
7165
  }] });
@@ -7149,10 +7171,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ng
7149
7171
  * @publicApi
7150
7172
  */
7151
7173
  class NonNullableFormBuilder {
7152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7153
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7175
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
7154
7176
  }
7155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
7156
7178
  type: Injectable,
7157
7179
  args: [{
7158
7180
  providedIn: 'root',
@@ -7178,10 +7200,10 @@ class UntypedFormBuilder extends FormBuilder {
7178
7200
  array(controlsConfig, validatorOrOpts, asyncValidator) {
7179
7201
  return super.array(controlsConfig, validatorOrOpts, asyncValidator);
7180
7202
  }
7181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7182
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7204
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
7183
7205
  }
7184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: UntypedFormBuilder, decorators: [{
7185
7207
  type: Injectable,
7186
7208
  args: [{ providedIn: 'root' }]
7187
7209
  }] });
@@ -7194,7 +7216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ng
7194
7216
  /**
7195
7217
  * @publicApi
7196
7218
  */
7197
- const VERSION = new Version('18.0.0-rc.1');
7219
+ const VERSION = new Version('18.0.0-rc.2');
7198
7220
 
7199
7221
  /**
7200
7222
  * Exports the required providers and directives for template-driven forms,
@@ -7225,11 +7247,11 @@ class FormsModule {
7225
7247
  ],
7226
7248
  };
7227
7249
  }
7228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7229
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7230
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7251
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
7252
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
7231
7253
  }
7232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: FormsModule, decorators: [{
7254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: FormsModule, decorators: [{
7233
7255
  type: NgModule,
7234
7256
  args: [{
7235
7257
  declarations: TEMPLATE_DRIVEN_DIRECTIVES,
@@ -7271,11 +7293,11 @@ class ReactiveFormsModule {
7271
7293
  ],
7272
7294
  };
7273
7295
  }
7274
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7275
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7276
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7297
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
7298
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
7277
7299
  }
7278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.2", ngImport: i0, type: ReactiveFormsModule, decorators: [{
7279
7301
  type: NgModule,
7280
7302
  args: [{
7281
7303
  declarations: [REACTIVE_DRIVEN_DIRECTIVES],
@@ -7307,5 +7329,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-rc.1", ng
7307
7329
  * Generated bundle index. Do not edit.
7308
7330
  */
7309
7331
 
7310
- 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 };
7332
+ export { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, ControlEvent, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormResetEvent, FormSubmittedEvent, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, PristineChangeEvent, PristineEvent, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, StatusChangeEvent, StatusEvent, TouchedChangeEvent, TouchedEvent, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, ValueChangeEvent, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };
7311
7333
  //# sourceMappingURL=forms.mjs.map