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