@angular/forms 18.0.0-next.2 → 18.0.0-next.4
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 +6 -6
- package/esm2022/src/directives/ng_form.mjs +3 -3
- 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 +5 -6
- package/esm2022/src/directives/reactive_directives/form_control_name.mjs +5 -7
- package/esm2022/src/directives/reactive_directives/form_group_directive.mjs +5 -5
- package/esm2022/src/directives/reactive_directives/form_group_name.mjs +9 -9
- 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 +36 -36
- package/esm2022/src/directives.mjs +4 -4
- package/esm2022/src/form_builder.mjs +11 -11
- package/esm2022/src/form_providers.mjs +13 -13
- package/esm2022/src/forms.mjs +2 -2
- package/esm2022/src/model/abstract_model.mjs +147 -133
- package/esm2022/src/model/form_array.mjs +3 -3
- package/esm2022/src/model/form_control.mjs +1 -1
- package/esm2022/src/model/form_group.mjs +3 -3
- package/esm2022/src/validators.mjs +2 -2
- package/esm2022/src/version.mjs +1 -1
- package/fesm2022/forms.mjs +293 -283
- package/fesm2022/forms.mjs.map +1 -1
- package/index.d.ts +131 -37
- package/package.json +4 -4
package/fesm2022/forms.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v18.0.0-next.
|
|
3
|
-
* (c) 2010-
|
|
2
|
+
* @license Angular v18.0.0-next.4
|
|
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
8
|
import { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisSubscribable, ɵRuntimeError, Self, EventEmitter, Input, Host, SkipSelf, booleanAttribute, ChangeDetectorRef, Output, Injectable, inject, NgModule, Version } from '@angular/core';
|
|
9
9
|
import { ɵgetDOM } from '@angular/common';
|
|
10
|
-
import { from, forkJoin } from 'rxjs';
|
|
10
|
+
import { from, forkJoin, Subject } from 'rxjs';
|
|
11
11
|
import { map } from 'rxjs/operators';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -62,10 +62,10 @@ class BaseControlValueAccessor {
|
|
|
62
62
|
setDisabledState(isDisabled) {
|
|
63
63
|
this.setProperty('disabled', isDisabled);
|
|
64
64
|
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
66
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
65
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
66
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: BaseControlValueAccessor, ngImport: i0 }); }
|
|
67
67
|
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
|
|
69
69
|
type: Directive
|
|
70
70
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }] });
|
|
71
71
|
/**
|
|
@@ -78,10 +78,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
78
78
|
* applications code.
|
|
79
79
|
*/
|
|
80
80
|
class BuiltInControlValueAccessor extends BaseControlValueAccessor {
|
|
81
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
82
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
81
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
82
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 }); }
|
|
83
83
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
|
|
85
85
|
type: Directive
|
|
86
86
|
}] });
|
|
87
87
|
/**
|
|
@@ -129,10 +129,10 @@ class CheckboxControlValueAccessor extends BuiltInControlValueAccessor {
|
|
|
129
129
|
writeValue(value) {
|
|
130
130
|
this.setProperty('checked', value);
|
|
131
131
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
133
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
133
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]", host: { listeners: { "change": "onChange($event.target.checked)", "blur": "onTouched()" } }, providers: [CHECKBOX_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{
|
|
136
136
|
type: Directive,
|
|
137
137
|
args: [{
|
|
138
138
|
selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',
|
|
@@ -229,10 +229,10 @@ class DefaultValueAccessor extends BaseControlValueAccessor {
|
|
|
229
229
|
this._composing = false;
|
|
230
230
|
this._compositionMode && this.onChange(value);
|
|
231
231
|
}
|
|
232
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
233
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
232
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: DefaultValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
233
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]", host: { listeners: { "input": "$any(this)._handleInput($event.target.value)", "blur": "onTouched()", "compositionstart": "$any(this)._compositionStart()", "compositionend": "$any(this)._compositionEnd($event.target.value)" } }, providers: [DEFAULT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
234
234
|
}
|
|
235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", 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]',
|
|
@@ -364,7 +364,7 @@ const EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(
|
|
|
364
364
|
* A validator is a function that processes a `FormControl` or collection of
|
|
365
365
|
* controls and returns an error map or null. A null map means that validation has passed.
|
|
366
366
|
*
|
|
367
|
-
* @see [Form Validation](
|
|
367
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
368
368
|
*
|
|
369
369
|
* @publicApi
|
|
370
370
|
*/
|
|
@@ -1322,10 +1322,10 @@ class NgControlStatus extends AbstractControlStatus {
|
|
|
1322
1322
|
constructor(cd) {
|
|
1323
1323
|
super(cd);
|
|
1324
1324
|
}
|
|
1325
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
1326
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
1325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1326
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgControlStatus, selector: "[formControlName],[ngModel],[formControl]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending" } }, usesInheritance: true, ngImport: i0 }); }
|
|
1327
1327
|
}
|
|
1328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
1328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgControlStatus, decorators: [{
|
|
1329
1329
|
type: Directive,
|
|
1330
1330
|
args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]
|
|
1331
1331
|
}], ctorParameters: () => [{ type: NgControl, decorators: [{
|
|
@@ -1347,10 +1347,10 @@ class NgControlStatusGroup extends AbstractControlStatus {
|
|
|
1347
1347
|
constructor(cd) {
|
|
1348
1348
|
super(cd);
|
|
1349
1349
|
}
|
|
1350
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
1351
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
1350
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1351
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]", host: { properties: { "class.ng-untouched": "isUntouched", "class.ng-touched": "isTouched", "class.ng-pristine": "isPristine", "class.ng-dirty": "isDirty", "class.ng-valid": "isValid", "class.ng-invalid": "isInvalid", "class.ng-pending": "isPending", "class.ng-submitted": "isSubmitted" } }, usesInheritance: true, ngImport: i0 }); }
|
|
1352
1352
|
}
|
|
1353
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
1353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgControlStatusGroup, decorators: [{
|
|
1354
1354
|
type: Directive,
|
|
1355
1355
|
args: [{
|
|
1356
1356
|
selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',
|
|
@@ -1541,6 +1541,61 @@ const PENDING = 'PENDING';
|
|
|
1541
1541
|
* @see {@link status}
|
|
1542
1542
|
*/
|
|
1543
1543
|
const DISABLED = 'DISABLED';
|
|
1544
|
+
/**
|
|
1545
|
+
* Base class for every event sent by `AbstractControl.events()`
|
|
1546
|
+
*
|
|
1547
|
+
* @publicApi
|
|
1548
|
+
*/
|
|
1549
|
+
class ControlEvent {
|
|
1550
|
+
}
|
|
1551
|
+
/**
|
|
1552
|
+
* Event fired when the value of a control changes.
|
|
1553
|
+
*
|
|
1554
|
+
* @publicApi
|
|
1555
|
+
*/
|
|
1556
|
+
class ValueChangeEvent extends ControlEvent {
|
|
1557
|
+
constructor(value, source) {
|
|
1558
|
+
super();
|
|
1559
|
+
this.value = value;
|
|
1560
|
+
this.source = source;
|
|
1561
|
+
}
|
|
1562
|
+
}
|
|
1563
|
+
/**
|
|
1564
|
+
* Event fired when the control's pristine state changes (pristine <=> dirty).
|
|
1565
|
+
*
|
|
1566
|
+
* @publicApi
|
|
1567
|
+
*/
|
|
1568
|
+
class PristineChangeEvent extends ControlEvent {
|
|
1569
|
+
constructor(pristine, source) {
|
|
1570
|
+
super();
|
|
1571
|
+
this.pristine = pristine;
|
|
1572
|
+
this.source = source;
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
/**
|
|
1576
|
+
* Event fired when the control's touched status changes (touched <=> untouched).
|
|
1577
|
+
*
|
|
1578
|
+
* @publicApi
|
|
1579
|
+
*/
|
|
1580
|
+
class TouchedChangeEvent extends ControlEvent {
|
|
1581
|
+
constructor(touched, source) {
|
|
1582
|
+
super();
|
|
1583
|
+
this.touched = touched;
|
|
1584
|
+
this.source = source;
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1587
|
+
/**
|
|
1588
|
+
* Event fired when the control's status changes.
|
|
1589
|
+
*
|
|
1590
|
+
* @publicApi
|
|
1591
|
+
*/
|
|
1592
|
+
class StatusChangeEvent extends ControlEvent {
|
|
1593
|
+
constructor(status, source) {
|
|
1594
|
+
super();
|
|
1595
|
+
this.status = status;
|
|
1596
|
+
this.source = source;
|
|
1597
|
+
}
|
|
1598
|
+
}
|
|
1544
1599
|
/**
|
|
1545
1600
|
* Gets validators from either an options object or given validators.
|
|
1546
1601
|
*/
|
|
@@ -1605,9 +1660,9 @@ function assertAllValuesPresent(control, isGroup, value) {
|
|
|
1605
1660
|
* The first type parameter TValue represents the value type of the control (`control.value`).
|
|
1606
1661
|
* The optional type parameter TRawValue represents the raw value type (`control.getRawValue()`).
|
|
1607
1662
|
*
|
|
1608
|
-
* @see [Forms Guide](
|
|
1609
|
-
* @see [Reactive Forms Guide](
|
|
1610
|
-
* @see [Dynamic Forms Guide](
|
|
1663
|
+
* @see [Forms Guide](guide/forms)
|
|
1664
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
1665
|
+
* @see [Dynamic Forms Guide](guide/forms/dynamic-forms)
|
|
1611
1666
|
*
|
|
1612
1667
|
* @publicApi
|
|
1613
1668
|
*/
|
|
@@ -1649,6 +1704,25 @@ class AbstractControl {
|
|
|
1649
1704
|
* a `blur` event on it.
|
|
1650
1705
|
*/
|
|
1651
1706
|
this.touched = false;
|
|
1707
|
+
/**
|
|
1708
|
+
* Exposed as observable, see below.
|
|
1709
|
+
*
|
|
1710
|
+
* @internal
|
|
1711
|
+
*/
|
|
1712
|
+
this._events = new Subject();
|
|
1713
|
+
/**
|
|
1714
|
+
* A multicasting observable that emits an event every time the state of the control changes.
|
|
1715
|
+
* It emits for value, status, pristine or touched changes.
|
|
1716
|
+
*
|
|
1717
|
+
* **Note**: On value change, the emit happens right after a value of this control is updated. The
|
|
1718
|
+
* value of a parent control (for example if this FormControl is a part of a FormGroup) is updated
|
|
1719
|
+
* later, so accessing a value of a parent control (using the `value` property) from the callback
|
|
1720
|
+
* of this event might result in getting a value that has not been updated yet. Subscribe to the
|
|
1721
|
+
* `events` of the parent control instead.
|
|
1722
|
+
* For other event types, the events are emitted after the parent control has been updated.
|
|
1723
|
+
*
|
|
1724
|
+
*/
|
|
1725
|
+
this.events = this._events.asObservable();
|
|
1652
1726
|
/** @internal */
|
|
1653
1727
|
this._onDisabledChange = [];
|
|
1654
1728
|
this._assignValidators(validators);
|
|
@@ -1927,145 +2001,84 @@ class AbstractControl {
|
|
|
1927
2001
|
clearAsyncValidators() {
|
|
1928
2002
|
this.asyncValidator = null;
|
|
1929
2003
|
}
|
|
1930
|
-
/**
|
|
1931
|
-
* Marks the control as `touched`. A control is touched by focus and
|
|
1932
|
-
* blur events that do not change the value.
|
|
1933
|
-
*
|
|
1934
|
-
* @see {@link markAsUntouched()}
|
|
1935
|
-
* @see {@link markAsDirty()}
|
|
1936
|
-
* @see {@link markAsPristine()}
|
|
1937
|
-
*
|
|
1938
|
-
* @param opts Configuration options that determine how the control propagates changes
|
|
1939
|
-
* and emits events after marking is applied.
|
|
1940
|
-
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
1941
|
-
* marks all direct ancestors. Default is false.
|
|
1942
|
-
*/
|
|
1943
2004
|
markAsTouched(opts = {}) {
|
|
2005
|
+
const changed = this.touched === false;
|
|
1944
2006
|
this.touched = true;
|
|
2007
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
1945
2008
|
if (this._parent && !opts.onlySelf) {
|
|
1946
|
-
this._parent.markAsTouched(opts);
|
|
2009
|
+
this._parent.markAsTouched({ ...opts, sourceControl });
|
|
2010
|
+
}
|
|
2011
|
+
if (changed && opts.emitEvent !== false) {
|
|
2012
|
+
this._events.next(new TouchedChangeEvent(true, sourceControl));
|
|
1947
2013
|
}
|
|
1948
2014
|
}
|
|
1949
2015
|
/**
|
|
1950
2016
|
* Marks the control and all its descendant controls as `touched`.
|
|
1951
2017
|
* @see {@link markAsTouched()}
|
|
1952
|
-
*/
|
|
1953
|
-
markAllAsTouched() {
|
|
1954
|
-
this.markAsTouched({ onlySelf: true });
|
|
1955
|
-
this._forEachChild((control) => control.markAllAsTouched());
|
|
1956
|
-
}
|
|
1957
|
-
/**
|
|
1958
|
-
* Marks the control as `untouched`.
|
|
1959
|
-
*
|
|
1960
|
-
* If the control has any children, also marks all children as `untouched`
|
|
1961
|
-
* and recalculates the `touched` status of all parent controls.
|
|
1962
|
-
*
|
|
1963
|
-
* @see {@link markAsTouched()}
|
|
1964
|
-
* @see {@link markAsDirty()}
|
|
1965
|
-
* @see {@link markAsPristine()}
|
|
1966
2018
|
*
|
|
1967
2019
|
* @param opts Configuration options that determine how the control propagates changes
|
|
1968
|
-
* and emits events after
|
|
1969
|
-
* * `
|
|
1970
|
-
*
|
|
2020
|
+
* and emits events after marking is applied.
|
|
2021
|
+
* * `emitEvent`: When true or not supplied (the default), the `events`
|
|
2022
|
+
* observable emits a `TouchedChangeEvent` with the `touched` property being `true`.
|
|
2023
|
+
* When false, no events are emitted.
|
|
1971
2024
|
*/
|
|
2025
|
+
markAllAsTouched(opts = {}) {
|
|
2026
|
+
this.markAsTouched({ onlySelf: true, emitEvent: opts.emitEvent, sourceControl: this });
|
|
2027
|
+
this._forEachChild((control) => control.markAllAsTouched(opts));
|
|
2028
|
+
}
|
|
1972
2029
|
markAsUntouched(opts = {}) {
|
|
2030
|
+
const changed = this.touched === true;
|
|
1973
2031
|
this.touched = false;
|
|
1974
2032
|
this._pendingTouched = false;
|
|
2033
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
1975
2034
|
this._forEachChild((control) => {
|
|
1976
|
-
control.markAsUntouched({ onlySelf: true });
|
|
2035
|
+
control.markAsUntouched({ onlySelf: true, emitEvent: opts.emitEvent, sourceControl });
|
|
1977
2036
|
});
|
|
1978
2037
|
if (this._parent && !opts.onlySelf) {
|
|
1979
|
-
this._parent._updateTouched(opts);
|
|
2038
|
+
this._parent._updateTouched(opts, sourceControl);
|
|
2039
|
+
}
|
|
2040
|
+
if (changed && opts.emitEvent !== false) {
|
|
2041
|
+
this._events.next(new TouchedChangeEvent(false, sourceControl));
|
|
1980
2042
|
}
|
|
1981
2043
|
}
|
|
1982
|
-
/**
|
|
1983
|
-
* Marks the control as `dirty`. A control becomes dirty when
|
|
1984
|
-
* the control's value is changed through the UI; compare `markAsTouched`.
|
|
1985
|
-
*
|
|
1986
|
-
* @see {@link markAsTouched()}
|
|
1987
|
-
* @see {@link markAsUntouched()}
|
|
1988
|
-
* @see {@link markAsPristine()}
|
|
1989
|
-
*
|
|
1990
|
-
* @param opts Configuration options that determine how the control propagates changes
|
|
1991
|
-
* and emits events after marking is applied.
|
|
1992
|
-
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
1993
|
-
* marks all direct ancestors. Default is false.
|
|
1994
|
-
*/
|
|
1995
2044
|
markAsDirty(opts = {}) {
|
|
2045
|
+
const changed = this.pristine === true;
|
|
1996
2046
|
this.pristine = false;
|
|
2047
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
1997
2048
|
if (this._parent && !opts.onlySelf) {
|
|
1998
|
-
this._parent.markAsDirty(opts);
|
|
2049
|
+
this._parent.markAsDirty({ ...opts, sourceControl });
|
|
2050
|
+
}
|
|
2051
|
+
if (changed && opts.emitEvent !== false) {
|
|
2052
|
+
this._events.next(new PristineChangeEvent(false, sourceControl));
|
|
1999
2053
|
}
|
|
2000
2054
|
}
|
|
2001
|
-
/**
|
|
2002
|
-
* Marks the control as `pristine`.
|
|
2003
|
-
*
|
|
2004
|
-
* If the control has any children, marks all children as `pristine`,
|
|
2005
|
-
* and recalculates the `pristine` status of all parent
|
|
2006
|
-
* controls.
|
|
2007
|
-
*
|
|
2008
|
-
* @see {@link markAsTouched()}
|
|
2009
|
-
* @see {@link markAsUntouched()}
|
|
2010
|
-
* @see {@link markAsDirty()}
|
|
2011
|
-
*
|
|
2012
|
-
* @param opts Configuration options that determine how the control emits events after
|
|
2013
|
-
* marking is applied.
|
|
2014
|
-
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
2015
|
-
* marks all direct ancestors. Default is false.
|
|
2016
|
-
*/
|
|
2017
2055
|
markAsPristine(opts = {}) {
|
|
2056
|
+
const changed = this.pristine === false;
|
|
2018
2057
|
this.pristine = true;
|
|
2019
2058
|
this._pendingDirty = false;
|
|
2059
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
2020
2060
|
this._forEachChild((control) => {
|
|
2021
|
-
control
|
|
2061
|
+
/** We don't propagate the source control downwards */
|
|
2062
|
+
control.markAsPristine({ onlySelf: true, emitEvent: opts.emitEvent });
|
|
2022
2063
|
});
|
|
2023
2064
|
if (this._parent && !opts.onlySelf) {
|
|
2024
|
-
this._parent._updatePristine(opts);
|
|
2065
|
+
this._parent._updatePristine(opts, sourceControl);
|
|
2066
|
+
}
|
|
2067
|
+
if (changed && opts.emitEvent !== false) {
|
|
2068
|
+
this._events.next(new PristineChangeEvent(true, sourceControl));
|
|
2025
2069
|
}
|
|
2026
2070
|
}
|
|
2027
|
-
/**
|
|
2028
|
-
* Marks the control as `pending`.
|
|
2029
|
-
*
|
|
2030
|
-
* A control is pending while the control performs async validation.
|
|
2031
|
-
*
|
|
2032
|
-
* @see {@link AbstractControl.status}
|
|
2033
|
-
*
|
|
2034
|
-
* @param opts Configuration options that determine how the control propagates changes and
|
|
2035
|
-
* emits events after marking is applied.
|
|
2036
|
-
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
2037
|
-
* marks all direct ancestors. Default is false.
|
|
2038
|
-
* * `emitEvent`: When true or not supplied (the default), the `statusChanges`
|
|
2039
|
-
* observable emits an event with the latest status the control is marked pending.
|
|
2040
|
-
* When false, no events are emitted.
|
|
2041
|
-
*
|
|
2042
|
-
*/
|
|
2043
2071
|
markAsPending(opts = {}) {
|
|
2044
2072
|
this.status = PENDING;
|
|
2073
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
2045
2074
|
if (opts.emitEvent !== false) {
|
|
2075
|
+
this._events.next(new StatusChangeEvent(this.status, sourceControl));
|
|
2046
2076
|
this.statusChanges.emit(this.status);
|
|
2047
2077
|
}
|
|
2048
2078
|
if (this._parent && !opts.onlySelf) {
|
|
2049
|
-
this._parent.markAsPending(opts);
|
|
2079
|
+
this._parent.markAsPending({ ...opts, sourceControl });
|
|
2050
2080
|
}
|
|
2051
2081
|
}
|
|
2052
|
-
/**
|
|
2053
|
-
* Disables the control. This means the control is exempt from validation checks and
|
|
2054
|
-
* excluded from the aggregate value of any parent. Its status is `DISABLED`.
|
|
2055
|
-
*
|
|
2056
|
-
* If the control has children, all children are also disabled.
|
|
2057
|
-
*
|
|
2058
|
-
* @see {@link AbstractControl.status}
|
|
2059
|
-
*
|
|
2060
|
-
* @param opts Configuration options that determine how the control propagates
|
|
2061
|
-
* changes and emits events after the control is disabled.
|
|
2062
|
-
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
2063
|
-
* marks all direct ancestors. Default is false.
|
|
2064
|
-
* * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
|
|
2065
|
-
* `valueChanges`
|
|
2066
|
-
* observables emit events with the latest status and value when the control is disabled.
|
|
2067
|
-
* When false, no events are emitted.
|
|
2068
|
-
*/
|
|
2069
2082
|
disable(opts = {}) {
|
|
2070
2083
|
// If parent has been marked artificially dirty we don't want to re-calculate the
|
|
2071
2084
|
// parent's dirtiness based on the children.
|
|
@@ -2073,14 +2086,18 @@ class AbstractControl {
|
|
|
2073
2086
|
this.status = DISABLED;
|
|
2074
2087
|
this.errors = null;
|
|
2075
2088
|
this._forEachChild((control) => {
|
|
2089
|
+
/** We don't propagate the source control downwards */
|
|
2076
2090
|
control.disable({ ...opts, onlySelf: true });
|
|
2077
2091
|
});
|
|
2078
2092
|
this._updateValue();
|
|
2093
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
2079
2094
|
if (opts.emitEvent !== false) {
|
|
2095
|
+
this._events.next(new ValueChangeEvent(this.value, sourceControl));
|
|
2096
|
+
this._events.next(new StatusChangeEvent(this.status, sourceControl));
|
|
2080
2097
|
this.valueChanges.emit(this.value);
|
|
2081
2098
|
this.statusChanges.emit(this.status);
|
|
2082
2099
|
}
|
|
2083
|
-
this._updateAncestors({ ...opts, skipPristineCheck });
|
|
2100
|
+
this._updateAncestors({ ...opts, skipPristineCheck }, this);
|
|
2084
2101
|
this._onDisabledChange.forEach((changeFn) => changeFn(true));
|
|
2085
2102
|
}
|
|
2086
2103
|
/**
|
|
@@ -2096,8 +2113,8 @@ class AbstractControl {
|
|
|
2096
2113
|
* emits events when marked as untouched
|
|
2097
2114
|
* * `onlySelf`: When true, mark only this control. When false or not supplied,
|
|
2098
2115
|
* marks all direct ancestors. Default is false.
|
|
2099
|
-
* * `emitEvent`: When true or not supplied (the default),
|
|
2100
|
-
* `valueChanges`
|
|
2116
|
+
* * `emitEvent`: When true or not supplied (the default), the `statusChanges`,
|
|
2117
|
+
* `valueChanges` and `events`
|
|
2101
2118
|
* observables emit events with the latest status and value when the control is enabled.
|
|
2102
2119
|
* When false, no events are emitted.
|
|
2103
2120
|
*/
|
|
@@ -2110,16 +2127,16 @@ class AbstractControl {
|
|
|
2110
2127
|
control.enable({ ...opts, onlySelf: true });
|
|
2111
2128
|
});
|
|
2112
2129
|
this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });
|
|
2113
|
-
this._updateAncestors({ ...opts, skipPristineCheck });
|
|
2130
|
+
this._updateAncestors({ ...opts, skipPristineCheck }, this);
|
|
2114
2131
|
this._onDisabledChange.forEach((changeFn) => changeFn(false));
|
|
2115
2132
|
}
|
|
2116
|
-
_updateAncestors(opts) {
|
|
2133
|
+
_updateAncestors(opts, sourceControl) {
|
|
2117
2134
|
if (this._parent && !opts.onlySelf) {
|
|
2118
2135
|
this._parent.updateValueAndValidity(opts);
|
|
2119
2136
|
if (!opts.skipPristineCheck) {
|
|
2120
|
-
this._parent._updatePristine();
|
|
2137
|
+
this._parent._updatePristine({}, sourceControl);
|
|
2121
2138
|
}
|
|
2122
|
-
this._parent._updateTouched();
|
|
2139
|
+
this._parent._updateTouched({}, sourceControl);
|
|
2123
2140
|
}
|
|
2124
2141
|
}
|
|
2125
2142
|
/**
|
|
@@ -2137,20 +2154,6 @@ class AbstractControl {
|
|
|
2137
2154
|
getRawValue() {
|
|
2138
2155
|
return this.value;
|
|
2139
2156
|
}
|
|
2140
|
-
/**
|
|
2141
|
-
* Recalculates the value and validation status of the control.
|
|
2142
|
-
*
|
|
2143
|
-
* By default, it also updates the value and validity of its ancestors.
|
|
2144
|
-
*
|
|
2145
|
-
* @param opts Configuration options determine how the control propagates changes and emits events
|
|
2146
|
-
* after updates and validity checks are applied.
|
|
2147
|
-
* * `onlySelf`: When true, only update this control. When false or not supplied,
|
|
2148
|
-
* update all direct ancestors. Default is false.
|
|
2149
|
-
* * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and
|
|
2150
|
-
* `valueChanges`
|
|
2151
|
-
* observables emit events with the latest status and value when the control is updated.
|
|
2152
|
-
* When false, no events are emitted.
|
|
2153
|
-
*/
|
|
2154
2157
|
updateValueAndValidity(opts = {}) {
|
|
2155
2158
|
this._setInitialStatus();
|
|
2156
2159
|
this._updateValue();
|
|
@@ -2162,12 +2165,15 @@ class AbstractControl {
|
|
|
2162
2165
|
this._runAsyncValidator(opts.emitEvent);
|
|
2163
2166
|
}
|
|
2164
2167
|
}
|
|
2168
|
+
const sourceControl = opts.sourceControl ?? this;
|
|
2165
2169
|
if (opts.emitEvent !== false) {
|
|
2170
|
+
this._events.next(new ValueChangeEvent(this.value, sourceControl));
|
|
2171
|
+
this._events.next(new StatusChangeEvent(this.status, sourceControl));
|
|
2166
2172
|
this.valueChanges.emit(this.value);
|
|
2167
2173
|
this.statusChanges.emit(this.status);
|
|
2168
2174
|
}
|
|
2169
2175
|
if (this._parent && !opts.onlySelf) {
|
|
2170
|
-
this._parent.updateValueAndValidity(opts);
|
|
2176
|
+
this._parent.updateValueAndValidity({ ...opts, sourceControl });
|
|
2171
2177
|
}
|
|
2172
2178
|
}
|
|
2173
2179
|
/** @internal */
|
|
@@ -2231,7 +2237,7 @@ class AbstractControl {
|
|
|
2231
2237
|
*/
|
|
2232
2238
|
setErrors(errors, opts = {}) {
|
|
2233
2239
|
this.errors = errors;
|
|
2234
|
-
this._updateControlsErrors(opts.emitEvent !== false);
|
|
2240
|
+
this._updateControlsErrors(opts.emitEvent !== false, this);
|
|
2235
2241
|
}
|
|
2236
2242
|
/**
|
|
2237
2243
|
* Retrieves a child control given the control's name or path.
|
|
@@ -2348,13 +2354,14 @@ class AbstractControl {
|
|
|
2348
2354
|
return x;
|
|
2349
2355
|
}
|
|
2350
2356
|
/** @internal */
|
|
2351
|
-
_updateControlsErrors(emitEvent) {
|
|
2357
|
+
_updateControlsErrors(emitEvent, changedControl) {
|
|
2352
2358
|
this.status = this._calculateStatus();
|
|
2353
2359
|
if (emitEvent) {
|
|
2354
2360
|
this.statusChanges.emit(this.status);
|
|
2361
|
+
this._events.next(new StatusChangeEvent(this.status, changedControl));
|
|
2355
2362
|
}
|
|
2356
2363
|
if (this._parent) {
|
|
2357
|
-
this._parent._updateControlsErrors(emitEvent);
|
|
2364
|
+
this._parent._updateControlsErrors(emitEvent, changedControl);
|
|
2358
2365
|
}
|
|
2359
2366
|
}
|
|
2360
2367
|
/** @internal */
|
|
@@ -2386,17 +2393,23 @@ class AbstractControl {
|
|
|
2386
2393
|
return this._anyControls((control) => control.touched);
|
|
2387
2394
|
}
|
|
2388
2395
|
/** @internal */
|
|
2389
|
-
_updatePristine(opts
|
|
2390
|
-
|
|
2396
|
+
_updatePristine(opts, changedControl) {
|
|
2397
|
+
const newPristine = !this._anyControlsDirty();
|
|
2398
|
+
const changed = this.pristine !== newPristine;
|
|
2399
|
+
this.pristine = newPristine;
|
|
2391
2400
|
if (this._parent && !opts.onlySelf) {
|
|
2392
|
-
this._parent._updatePristine(opts);
|
|
2401
|
+
this._parent._updatePristine(opts, changedControl);
|
|
2402
|
+
}
|
|
2403
|
+
if (changed) {
|
|
2404
|
+
this._events.next(new PristineChangeEvent(this.pristine, changedControl));
|
|
2393
2405
|
}
|
|
2394
2406
|
}
|
|
2395
2407
|
/** @internal */
|
|
2396
|
-
_updateTouched(opts = {}) {
|
|
2408
|
+
_updateTouched(opts = {}, changedControl) {
|
|
2397
2409
|
this.touched = this._anyControlsTouched();
|
|
2410
|
+
this._events.next(new TouchedChangeEvent(this.touched, changedControl));
|
|
2398
2411
|
if (this._parent && !opts.onlySelf) {
|
|
2399
|
-
this._parent._updateTouched(opts);
|
|
2412
|
+
this._parent._updateTouched(opts, changedControl);
|
|
2400
2413
|
}
|
|
2401
2414
|
}
|
|
2402
2415
|
/** @internal */
|
|
@@ -2782,8 +2795,8 @@ class FormGroup extends AbstractControl {
|
|
|
2782
2795
|
this._forEachChild((control, name) => {
|
|
2783
2796
|
control.reset(value ? value[name] : null, { onlySelf: true, emitEvent: options.emitEvent });
|
|
2784
2797
|
});
|
|
2785
|
-
this._updatePristine(options);
|
|
2786
|
-
this._updateTouched(options);
|
|
2798
|
+
this._updatePristine(options, this);
|
|
2799
|
+
this._updateTouched(options, this);
|
|
2787
2800
|
this.updateValueAndValidity(options);
|
|
2788
2801
|
}
|
|
2789
2802
|
/**
|
|
@@ -3514,10 +3527,10 @@ class NgForm extends ControlContainer {
|
|
|
3514
3527
|
path.pop();
|
|
3515
3528
|
return path.length ? this.form.get(path) : this.form;
|
|
3516
3529
|
}
|
|
3517
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3518
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
3530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
3531
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: { options: ["ngFormOptions", "options"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider$1], exportAs: ["ngForm"], usesInheritance: true, ngImport: i0 }); }
|
|
3519
3532
|
}
|
|
3520
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgForm, decorators: [{
|
|
3521
3534
|
type: Directive,
|
|
3522
3535
|
args: [{
|
|
3523
3536
|
selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',
|
|
@@ -3712,10 +3725,10 @@ class AbstractFormGroupDirective extends ControlContainer {
|
|
|
3712
3725
|
}
|
|
3713
3726
|
/** @internal */
|
|
3714
3727
|
_checkParentType() { }
|
|
3715
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3716
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
3728
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3729
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 }); }
|
|
3717
3730
|
}
|
|
3718
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{
|
|
3719
3732
|
type: Directive
|
|
3720
3733
|
}] });
|
|
3721
3734
|
|
|
@@ -3814,10 +3827,10 @@ class NgModelGroup extends AbstractFormGroupDirective {
|
|
|
3814
3827
|
throw modelGroupParentException();
|
|
3815
3828
|
}
|
|
3816
3829
|
}
|
|
3817
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3818
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
3830
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
3831
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 }); }
|
|
3819
3832
|
}
|
|
3820
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
3833
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgModelGroup, decorators: [{
|
|
3821
3834
|
type: Directive,
|
|
3822
3835
|
args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]
|
|
3823
3836
|
}], ctorParameters: () => [{ type: ControlContainer, decorators: [{
|
|
@@ -4093,10 +4106,10 @@ class NgModel extends NgControl {
|
|
|
4093
4106
|
_getPath(controlName) {
|
|
4094
4107
|
return this._parent ? controlPath(controlName, this._parent) : [controlName];
|
|
4095
4108
|
}
|
|
4096
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4097
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
4110
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: { name: "name", isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"], options: ["ngModelOptions", "options"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding$1], exportAs: ["ngModel"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
4098
4111
|
}
|
|
4099
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgModel, decorators: [{
|
|
4100
4113
|
type: Directive,
|
|
4101
4114
|
args: [{
|
|
4102
4115
|
selector: '[ngModel]:not([formControlName]):not([formControl])',
|
|
@@ -4172,10 +4185,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
4172
4185
|
* @ngModule FormsModule
|
|
4173
4186
|
*/
|
|
4174
4187
|
class ɵNgNoValidate {
|
|
4175
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4176
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4189
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])", host: { attributes: { "novalidate": "" } }, ngImport: i0 }); }
|
|
4177
4190
|
}
|
|
4178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵNgNoValidate, decorators: [{
|
|
4179
4192
|
type: Directive,
|
|
4180
4193
|
args: [{
|
|
4181
4194
|
selector: 'form:not([ngNoForm]):not([ngNativeValidate])',
|
|
@@ -4231,10 +4244,10 @@ class NumberValueAccessor extends BuiltInControlValueAccessor {
|
|
|
4231
4244
|
fn(value == '' ? null : parseFloat(value));
|
|
4232
4245
|
};
|
|
4233
4246
|
}
|
|
4234
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4235
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4247
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4248
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]", host: { listeners: { "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [NUMBER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
4236
4249
|
}
|
|
4237
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4250
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NumberValueAccessor, decorators: [{
|
|
4238
4251
|
type: Directive,
|
|
4239
4252
|
args: [{
|
|
4240
4253
|
selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',
|
|
@@ -4298,10 +4311,10 @@ class RadioControlRegistry {
|
|
|
4298
4311
|
return controlPair[0]._parent === accessor._control._parent &&
|
|
4299
4312
|
controlPair[1].name === accessor.name;
|
|
4300
4313
|
}
|
|
4301
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4302
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4314
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4315
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' }); }
|
|
4303
4316
|
}
|
|
4304
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RadioControlRegistry, decorators: [{
|
|
4305
4318
|
type: Injectable,
|
|
4306
4319
|
args: [{ providedIn: 'root' }]
|
|
4307
4320
|
}] });
|
|
@@ -4412,10 +4425,10 @@ class RadioControlValueAccessor extends BuiltInControlValueAccessor {
|
|
|
4412
4425
|
if (!this.name && this.formControlName)
|
|
4413
4426
|
this.name = this.formControlName;
|
|
4414
4427
|
}
|
|
4415
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4416
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4429
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: { name: "name", formControlName: "formControlName", value: "value" }, host: { listeners: { "change": "onChange()", "blur": "onTouched()" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
4417
4430
|
}
|
|
4418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
|
|
4419
4432
|
type: Directive,
|
|
4420
4433
|
args: [{
|
|
4421
4434
|
selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',
|
|
@@ -4476,10 +4489,10 @@ class RangeValueAccessor extends BuiltInControlValueAccessor {
|
|
|
4476
4489
|
fn(value == '' ? null : parseFloat(value));
|
|
4477
4490
|
};
|
|
4478
4491
|
}
|
|
4479
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4480
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4492
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4493
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]", host: { listeners: { "change": "onChange($event.target.value)", "input": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [RANGE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
4481
4494
|
}
|
|
4482
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RangeValueAccessor, decorators: [{
|
|
4483
4496
|
type: Directive,
|
|
4484
4497
|
args: [{
|
|
4485
4498
|
selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',
|
|
@@ -4507,9 +4520,8 @@ const formControlBinding = {
|
|
|
4507
4520
|
* Note that support for using the `ngModel` input property and `ngModelChange` event with reactive
|
|
4508
4521
|
* form directives was deprecated in Angular v6 and is scheduled for removal in
|
|
4509
4522
|
* a future version of Angular.
|
|
4510
|
-
* For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).
|
|
4511
4523
|
*
|
|
4512
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
4524
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
4513
4525
|
* @see {@link FormControl}
|
|
4514
4526
|
* @see {@link AbstractControl}
|
|
4515
4527
|
*
|
|
@@ -4610,10 +4622,10 @@ class FormControlDirective extends NgControl {
|
|
|
4610
4622
|
_isControlChanged(changes) {
|
|
4611
4623
|
return changes.hasOwnProperty('form');
|
|
4612
4624
|
}
|
|
4613
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4614
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4625
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
4626
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: FormControlDirective, selector: "[formControl]", inputs: { form: ["formControl", "form"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
4615
4627
|
}
|
|
4616
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormControlDirective, decorators: [{
|
|
4617
4629
|
type: Directive,
|
|
4618
4630
|
args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]
|
|
4619
4631
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -4675,7 +4687,7 @@ const formDirectiveProvider = {
|
|
|
4675
4687
|
* and `FormArray` instances to child `FormControlName`, `FormGroupName`,
|
|
4676
4688
|
* and `FormArrayName` directives.
|
|
4677
4689
|
*
|
|
4678
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
4690
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
4679
4691
|
* @see {@link AbstractControl}
|
|
4680
4692
|
*
|
|
4681
4693
|
* @usageNotes
|
|
@@ -4956,10 +4968,10 @@ class FormGroupDirective extends ControlContainer {
|
|
|
4956
4968
|
throw missingFormException();
|
|
4957
4969
|
}
|
|
4958
4970
|
}
|
|
4959
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4960
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
4971
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
4972
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: FormGroupDirective, selector: "[formGroup]", inputs: { form: ["formGroup", "form"] }, outputs: { ngSubmit: "ngSubmit" }, host: { listeners: { "submit": "onSubmit($event)", "reset": "onReset()" } }, providers: [formDirectiveProvider], exportAs: ["ngForm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
4961
4973
|
}
|
|
4962
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
4974
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormGroupDirective, decorators: [{
|
|
4963
4975
|
type: Directive,
|
|
4964
4976
|
args: [{
|
|
4965
4977
|
selector: '[formGroup]',
|
|
@@ -5012,7 +5024,7 @@ const formGroupNameProvider = {
|
|
|
5012
5024
|
* form separately from the rest or to group the values of certain
|
|
5013
5025
|
* controls into their own nested object.
|
|
5014
5026
|
*
|
|
5015
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
5027
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
5016
5028
|
*
|
|
5017
5029
|
* @usageNotes
|
|
5018
5030
|
*
|
|
@@ -5067,10 +5079,10 @@ class FormGroupName extends AbstractFormGroupDirective {
|
|
|
5067
5079
|
throw groupParentException();
|
|
5068
5080
|
}
|
|
5069
5081
|
}
|
|
5070
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5071
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5082
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
5083
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: FormGroupName, selector: "[formGroupName]", inputs: { name: ["formGroupName", "name"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 }); }
|
|
5072
5084
|
}
|
|
5073
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5085
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormGroupName, decorators: [{
|
|
5074
5086
|
type: Directive,
|
|
5075
5087
|
args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]
|
|
5076
5088
|
}], ctorParameters: () => [{ type: ControlContainer, decorators: [{
|
|
@@ -5113,7 +5125,7 @@ const formArrayNameProvider = {
|
|
|
5113
5125
|
* will look for a `FormArray` registered with that name in the parent
|
|
5114
5126
|
* `FormGroup` instance you passed into `FormGroupDirective`.
|
|
5115
5127
|
*
|
|
5116
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
5128
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
5117
5129
|
* @see {@link AbstractControl}
|
|
5118
5130
|
*
|
|
5119
5131
|
* @usageNotes
|
|
@@ -5187,10 +5199,10 @@ class FormArrayName extends ControlContainer {
|
|
|
5187
5199
|
throw arrayParentException();
|
|
5188
5200
|
}
|
|
5189
5201
|
}
|
|
5190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5191
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
5203
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: FormArrayName, selector: "[formArrayName]", inputs: { name: ["formArrayName", "name"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 }); }
|
|
5192
5204
|
}
|
|
5193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormArrayName, decorators: [{
|
|
5194
5206
|
type: Directive,
|
|
5195
5207
|
args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]
|
|
5196
5208
|
}], ctorParameters: () => [{ type: ControlContainer, decorators: [{
|
|
@@ -5231,7 +5243,7 @@ const controlNameBinding = {
|
|
|
5231
5243
|
* Syncs a `FormControl` in an existing `FormGroup` to a form control
|
|
5232
5244
|
* element by name.
|
|
5233
5245
|
*
|
|
5234
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
5246
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
5235
5247
|
* @see {@link FormControl}
|
|
5236
5248
|
* @see {@link AbstractControl}
|
|
5237
5249
|
*
|
|
@@ -5255,8 +5267,6 @@ const controlNameBinding = {
|
|
|
5255
5267
|
* form directives has been deprecated in Angular v6 and is scheduled for removal in
|
|
5256
5268
|
* a future version of Angular.
|
|
5257
5269
|
*
|
|
5258
|
-
* For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).
|
|
5259
|
-
*
|
|
5260
5270
|
* @ngModule ReactiveFormsModule
|
|
5261
5271
|
* @publicApi
|
|
5262
5272
|
*/
|
|
@@ -5368,10 +5378,10 @@ class FormControlName extends NgControl {
|
|
|
5368
5378
|
this.control = this.formDirective.addControl(this);
|
|
5369
5379
|
this._added = true;
|
|
5370
5380
|
}
|
|
5371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5372
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", 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 }); }
|
|
5382
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: FormControlName, selector: "[formControlName]", inputs: { name: ["formControlName", "name"], isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"] }, outputs: { update: "ngModelChange" }, providers: [controlNameBinding], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
5373
5383
|
}
|
|
5374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5384
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormControlName, decorators: [{
|
|
5375
5385
|
type: Directive,
|
|
5376
5386
|
args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]
|
|
5377
5387
|
}], ctorParameters: () => [{ type: ControlContainer, decorators: [{
|
|
@@ -5548,10 +5558,10 @@ class SelectControlValueAccessor extends BuiltInControlValueAccessor {
|
|
|
5548
5558
|
const id = _extractId$1(valueString);
|
|
5549
5559
|
return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
|
|
5550
5560
|
}
|
|
5551
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5552
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5562
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target.value)", "blur": "onTouched()" } }, providers: [SELECT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
5553
5563
|
}
|
|
5554
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: SelectControlValueAccessor, decorators: [{
|
|
5555
5565
|
type: Directive,
|
|
5556
5566
|
args: [{
|
|
5557
5567
|
selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',
|
|
@@ -5612,10 +5622,10 @@ class NgSelectOption {
|
|
|
5612
5622
|
this._select.writeValue(this._select.value);
|
|
5613
5623
|
}
|
|
5614
5624
|
}
|
|
5615
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5616
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5625
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5626
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: NgSelectOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
|
|
5617
5627
|
}
|
|
5618
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NgSelectOption, decorators: [{
|
|
5619
5629
|
type: Directive,
|
|
5620
5630
|
args: [{ selector: 'option' }]
|
|
5621
5631
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{
|
|
@@ -5779,10 +5789,10 @@ class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {
|
|
|
5779
5789
|
const id = _extractId(valueString);
|
|
5780
5790
|
return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;
|
|
5781
5791
|
}
|
|
5782
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5783
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5792
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5793
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: { compareWith: "compareWith" }, host: { listeners: { "change": "onChange($event.target)", "blur": "onTouched()" } }, providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 }); }
|
|
5784
5794
|
}
|
|
5785
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{
|
|
5786
5796
|
type: Directive,
|
|
5787
5797
|
args: [{
|
|
5788
5798
|
selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',
|
|
@@ -5853,10 +5863,10 @@ class ɵNgSelectMultipleOption {
|
|
|
5853
5863
|
this._select.writeValue(this._select.value);
|
|
5854
5864
|
}
|
|
5855
5865
|
}
|
|
5856
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5857
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5866
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5867
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: ɵNgSelectMultipleOption, selector: "option", inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
|
|
5858
5868
|
}
|
|
5859
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{
|
|
5860
5870
|
type: Directive,
|
|
5861
5871
|
args: [{ selector: 'option' }]
|
|
5862
5872
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{
|
|
@@ -5928,10 +5938,10 @@ class AbstractValidatorDirective {
|
|
|
5928
5938
|
enabled(input) {
|
|
5929
5939
|
return input != null /* both `null` and `undefined` */;
|
|
5930
5940
|
}
|
|
5931
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5932
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5941
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5942
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 }); }
|
|
5933
5943
|
}
|
|
5934
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5944
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
|
|
5935
5945
|
type: Directive
|
|
5936
5946
|
}] });
|
|
5937
5947
|
/**
|
|
@@ -5947,7 +5957,7 @@ const MAX_VALIDATOR = {
|
|
|
5947
5957
|
* A directive which installs the {@link MaxValidator} for any `formControlName`,
|
|
5948
5958
|
* `formControl`, or control with `ngModel` that also has a `max` attribute.
|
|
5949
5959
|
*
|
|
5950
|
-
* @see [Form Validation](guide/form-validation)
|
|
5960
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
5951
5961
|
*
|
|
5952
5962
|
* @usageNotes
|
|
5953
5963
|
*
|
|
@@ -5974,10 +5984,10 @@ class MaxValidator extends AbstractValidatorDirective {
|
|
|
5974
5984
|
/** @internal */
|
|
5975
5985
|
this.createValidator = (max) => maxValidator(max);
|
|
5976
5986
|
}
|
|
5977
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5978
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
5987
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5988
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: { max: "max" }, host: { properties: { "attr.max": "_enabled ? max : null" } }, providers: [MAX_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
5979
5989
|
}
|
|
5980
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
5990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MaxValidator, decorators: [{
|
|
5981
5991
|
type: Directive,
|
|
5982
5992
|
args: [{
|
|
5983
5993
|
selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',
|
|
@@ -6000,7 +6010,7 @@ const MIN_VALIDATOR = {
|
|
|
6000
6010
|
* A directive which installs the {@link MinValidator} for any `formControlName`,
|
|
6001
6011
|
* `formControl`, or control with `ngModel` that also has a `min` attribute.
|
|
6002
6012
|
*
|
|
6003
|
-
* @see [Form Validation](guide/form-validation)
|
|
6013
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6004
6014
|
*
|
|
6005
6015
|
* @usageNotes
|
|
6006
6016
|
*
|
|
@@ -6027,10 +6037,10 @@ class MinValidator extends AbstractValidatorDirective {
|
|
|
6027
6037
|
/** @internal */
|
|
6028
6038
|
this.createValidator = (min) => minValidator(min);
|
|
6029
6039
|
}
|
|
6030
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6031
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6040
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6041
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: { min: "min" }, host: { properties: { "attr.min": "_enabled ? min : null" } }, providers: [MIN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6032
6042
|
}
|
|
6033
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6043
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MinValidator, decorators: [{
|
|
6034
6044
|
type: Directive,
|
|
6035
6045
|
args: [{
|
|
6036
6046
|
selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',
|
|
@@ -6063,7 +6073,7 @@ const CHECKBOX_REQUIRED_VALIDATOR = {
|
|
|
6063
6073
|
* A directive that adds the `required` validator to any controls marked with the
|
|
6064
6074
|
* `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.
|
|
6065
6075
|
*
|
|
6066
|
-
* @see [Form Validation](guide/form-validation)
|
|
6076
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6067
6077
|
*
|
|
6068
6078
|
* @usageNotes
|
|
6069
6079
|
*
|
|
@@ -6091,10 +6101,10 @@ class RequiredValidator extends AbstractValidatorDirective {
|
|
|
6091
6101
|
enabled(input) {
|
|
6092
6102
|
return input;
|
|
6093
6103
|
}
|
|
6094
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6095
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6105
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: { required: "required" }, host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6096
6106
|
}
|
|
6097
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: RequiredValidator, decorators: [{
|
|
6098
6108
|
type: Directive,
|
|
6099
6109
|
args: [{
|
|
6100
6110
|
selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',
|
|
@@ -6108,7 +6118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
6108
6118
|
* A Directive that adds the `required` validator to checkbox controls marked with the
|
|
6109
6119
|
* `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.
|
|
6110
6120
|
*
|
|
6111
|
-
* @see [Form Validation](guide/form-validation)
|
|
6121
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6112
6122
|
*
|
|
6113
6123
|
* @usageNotes
|
|
6114
6124
|
*
|
|
@@ -6131,10 +6141,10 @@ class CheckboxRequiredValidator extends RequiredValidator {
|
|
|
6131
6141
|
/** @internal */
|
|
6132
6142
|
this.createValidator = (input) => requiredTrueValidator;
|
|
6133
6143
|
}
|
|
6134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6135
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6145
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]", host: { properties: { "attr.required": "_enabled ? \"\" : null" } }, providers: [CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6136
6146
|
}
|
|
6137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{
|
|
6138
6148
|
type: Directive,
|
|
6139
6149
|
args: [{
|
|
6140
6150
|
selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',
|
|
@@ -6159,7 +6169,7 @@ const EMAIL_VALIDATOR = {
|
|
|
6159
6169
|
* incorporate more RFC rules. More information can be found on the [Validators.email
|
|
6160
6170
|
* page](api/forms/Validators#email).
|
|
6161
6171
|
*
|
|
6162
|
-
* @see [Form Validation](guide/form-validation)
|
|
6172
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6163
6173
|
*
|
|
6164
6174
|
* @usageNotes
|
|
6165
6175
|
*
|
|
@@ -6192,10 +6202,10 @@ class EmailValidator extends AbstractValidatorDirective {
|
|
|
6192
6202
|
enabled(input) {
|
|
6193
6203
|
return input;
|
|
6194
6204
|
}
|
|
6195
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6196
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6206
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: { email: "email" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6197
6207
|
}
|
|
6198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: EmailValidator, decorators: [{
|
|
6199
6209
|
type: Directive,
|
|
6200
6210
|
args: [{
|
|
6201
6211
|
selector: '[email][formControlName],[email][formControl],[email][ngModel]',
|
|
@@ -6217,7 +6227,7 @@ const MIN_LENGTH_VALIDATOR = {
|
|
|
6217
6227
|
* A directive that adds minimum length validation to controls marked with the
|
|
6218
6228
|
* `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.
|
|
6219
6229
|
*
|
|
6220
|
-
* @see [Form Validation](guide/form-validation)
|
|
6230
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6221
6231
|
*
|
|
6222
6232
|
* @usageNotes
|
|
6223
6233
|
*
|
|
@@ -6244,10 +6254,10 @@ class MinLengthValidator extends AbstractValidatorDirective {
|
|
|
6244
6254
|
/** @internal */
|
|
6245
6255
|
this.createValidator = (minlength) => minLengthValidator(minlength);
|
|
6246
6256
|
}
|
|
6247
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6248
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6257
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6258
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: { minlength: "minlength" }, host: { properties: { "attr.minlength": "_enabled ? minlength : null" } }, providers: [MIN_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6249
6259
|
}
|
|
6250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MinLengthValidator, decorators: [{
|
|
6251
6261
|
type: Directive,
|
|
6252
6262
|
args: [{
|
|
6253
6263
|
selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',
|
|
@@ -6270,7 +6280,7 @@ const MAX_LENGTH_VALIDATOR = {
|
|
|
6270
6280
|
* A directive that adds maximum length validation to controls marked with the
|
|
6271
6281
|
* `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.
|
|
6272
6282
|
*
|
|
6273
|
-
* @see [Form Validation](guide/form-validation)
|
|
6283
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6274
6284
|
*
|
|
6275
6285
|
* @usageNotes
|
|
6276
6286
|
*
|
|
@@ -6297,10 +6307,10 @@ class MaxLengthValidator extends AbstractValidatorDirective {
|
|
|
6297
6307
|
/** @internal */
|
|
6298
6308
|
this.createValidator = (maxlength) => maxLengthValidator(maxlength);
|
|
6299
6309
|
}
|
|
6300
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6301
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6310
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6311
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: { maxlength: "maxlength" }, host: { properties: { "attr.maxlength": "_enabled ? maxlength : null" } }, providers: [MAX_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6302
6312
|
}
|
|
6303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: MaxLengthValidator, decorators: [{
|
|
6304
6314
|
type: Directive,
|
|
6305
6315
|
args: [{
|
|
6306
6316
|
selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',
|
|
@@ -6325,7 +6335,7 @@ const PATTERN_VALIDATOR = {
|
|
|
6325
6335
|
* `pattern` attribute. The regex must match the entire control value.
|
|
6326
6336
|
* The directive is provided with the `NG_VALIDATORS` multi-provider list.
|
|
6327
6337
|
*
|
|
6328
|
-
* @see [Form Validation](guide/form-validation)
|
|
6338
|
+
* @see [Form Validation](guide/forms/form-validation)
|
|
6329
6339
|
*
|
|
6330
6340
|
* @usageNotes
|
|
6331
6341
|
*
|
|
@@ -6352,10 +6362,10 @@ class PatternValidator extends AbstractValidatorDirective {
|
|
|
6352
6362
|
/** @internal */
|
|
6353
6363
|
this.createValidator = (input) => patternValidator(input);
|
|
6354
6364
|
}
|
|
6355
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6356
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6366
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.0-next.4", type: PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: { pattern: "pattern" }, host: { properties: { "attr.pattern": "_enabled ? pattern : null" } }, providers: [PATTERN_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
6357
6367
|
}
|
|
6358
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: PatternValidator, decorators: [{
|
|
6359
6369
|
type: Directive,
|
|
6360
6370
|
args: [{
|
|
6361
6371
|
selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',
|
|
@@ -6394,8 +6404,8 @@ const REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, Fo
|
|
|
6394
6404
|
* Internal module used for sharing directives between FormsModule and ReactiveFormsModule
|
|
6395
6405
|
*/
|
|
6396
6406
|
class ɵInternalFormsSharedModule {
|
|
6397
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6398
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
6407
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6408
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,
|
|
6399
6409
|
NgSelectOption,
|
|
6400
6410
|
ɵNgSelectMultipleOption,
|
|
6401
6411
|
DefaultValueAccessor,
|
|
@@ -6434,9 +6444,9 @@ class ɵInternalFormsSharedModule {
|
|
|
6434
6444
|
EmailValidator,
|
|
6435
6445
|
MinValidator,
|
|
6436
6446
|
MaxValidator] }); }
|
|
6437
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6447
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵInternalFormsSharedModule }); }
|
|
6438
6448
|
}
|
|
6439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
6449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{
|
|
6440
6450
|
type: NgModule,
|
|
6441
6451
|
args: [{
|
|
6442
6452
|
declarations: SHARED_FORM_DIRECTIVES,
|
|
@@ -6779,8 +6789,8 @@ class FormArray extends AbstractControl {
|
|
|
6779
6789
|
this._forEachChild((control, index) => {
|
|
6780
6790
|
control.reset(value[index], { onlySelf: true, emitEvent: options.emitEvent });
|
|
6781
6791
|
});
|
|
6782
|
-
this._updatePristine(options);
|
|
6783
|
-
this._updateTouched(options);
|
|
6792
|
+
this._updatePristine(options, this);
|
|
6793
|
+
this._updateTouched(options, this);
|
|
6784
6794
|
this.updateValueAndValidity(options);
|
|
6785
6795
|
}
|
|
6786
6796
|
/**
|
|
@@ -6912,7 +6922,7 @@ function isAbstractControlOptions(options) {
|
|
|
6912
6922
|
* `FormControl`, `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to
|
|
6913
6923
|
* build complex forms.
|
|
6914
6924
|
*
|
|
6915
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
6925
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
6916
6926
|
*
|
|
6917
6927
|
* @publicApi
|
|
6918
6928
|
*/
|
|
@@ -7088,10 +7098,10 @@ class FormBuilder {
|
|
|
7088
7098
|
return this.control(controls);
|
|
7089
7099
|
}
|
|
7090
7100
|
}
|
|
7091
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7092
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7102
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormBuilder, providedIn: 'root' }); }
|
|
7093
7103
|
}
|
|
7094
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormBuilder, decorators: [{
|
|
7095
7105
|
type: Injectable,
|
|
7096
7106
|
args: [{ providedIn: 'root' }]
|
|
7097
7107
|
}] });
|
|
@@ -7103,10 +7113,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
7103
7113
|
* @publicApi
|
|
7104
7114
|
*/
|
|
7105
7115
|
class NonNullableFormBuilder {
|
|
7106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7107
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7116
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NonNullableFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7117
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NonNullableFormBuilder, providedIn: 'root', useFactory: () => inject(FormBuilder).nonNullable }); }
|
|
7108
7118
|
}
|
|
7109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: NonNullableFormBuilder, decorators: [{
|
|
7110
7120
|
type: Injectable,
|
|
7111
7121
|
args: [{
|
|
7112
7122
|
providedIn: 'root',
|
|
@@ -7132,10 +7142,10 @@ class UntypedFormBuilder extends FormBuilder {
|
|
|
7132
7142
|
array(controlsConfig, validatorOrOpts, asyncValidator) {
|
|
7133
7143
|
return super.array(controlsConfig, validatorOrOpts, asyncValidator);
|
|
7134
7144
|
}
|
|
7135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7136
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: UntypedFormBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7146
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: UntypedFormBuilder, providedIn: 'root' }); }
|
|
7137
7147
|
}
|
|
7138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: UntypedFormBuilder, decorators: [{
|
|
7139
7149
|
type: Injectable,
|
|
7140
7150
|
args: [{ providedIn: 'root' }]
|
|
7141
7151
|
}] });
|
|
@@ -7148,14 +7158,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
7148
7158
|
/**
|
|
7149
7159
|
* @publicApi
|
|
7150
7160
|
*/
|
|
7151
|
-
const VERSION = new Version('18.0.0-next.
|
|
7161
|
+
const VERSION = new Version('18.0.0-next.4');
|
|
7152
7162
|
|
|
7153
7163
|
/**
|
|
7154
7164
|
* Exports the required providers and directives for template-driven forms,
|
|
7155
7165
|
* making them available for import by NgModules that import this module.
|
|
7156
7166
|
*
|
|
7157
|
-
* @see [Forms Overview](
|
|
7158
|
-
* @see [Template-driven Forms Guide](
|
|
7167
|
+
* @see [Forms Overview](guide/forms)
|
|
7168
|
+
* @see [Template-driven Forms Guide](guide/forms)
|
|
7159
7169
|
*
|
|
7160
7170
|
* @publicApi
|
|
7161
7171
|
*/
|
|
@@ -7177,11 +7187,11 @@ class FormsModule {
|
|
|
7177
7187
|
}]
|
|
7178
7188
|
};
|
|
7179
7189
|
}
|
|
7180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7181
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
7182
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7190
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7191
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] }); }
|
|
7192
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] }); }
|
|
7183
7193
|
}
|
|
7184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: FormsModule, decorators: [{
|
|
7185
7195
|
type: NgModule,
|
|
7186
7196
|
args: [{
|
|
7187
7197
|
declarations: TEMPLATE_DRIVEN_DIRECTIVES,
|
|
@@ -7192,8 +7202,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
7192
7202
|
* Exports the required infrastructure and directives for reactive forms,
|
|
7193
7203
|
* making them available for import by NgModules that import this module.
|
|
7194
7204
|
*
|
|
7195
|
-
* @see [Forms Overview](guide/forms
|
|
7196
|
-
* @see [Reactive Forms Guide](guide/reactive-forms)
|
|
7205
|
+
* @see [Forms Overview](guide/forms)
|
|
7206
|
+
* @see [Reactive Forms Guide](guide/forms/reactive-forms)
|
|
7197
7207
|
*
|
|
7198
7208
|
* @publicApi
|
|
7199
7209
|
*/
|
|
@@ -7223,11 +7233,11 @@ class ReactiveFormsModule {
|
|
|
7223
7233
|
]
|
|
7224
7234
|
};
|
|
7225
7235
|
}
|
|
7226
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7227
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.
|
|
7228
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7237
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.0-next.4", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] }); }
|
|
7238
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] }); }
|
|
7229
7239
|
}
|
|
7230
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.
|
|
7240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.4", ngImport: i0, type: ReactiveFormsModule, decorators: [{
|
|
7231
7241
|
type: NgModule,
|
|
7232
7242
|
args: [{
|
|
7233
7243
|
declarations: [REACTIVE_DRIVEN_DIRECTIVES],
|
|
@@ -7259,5 +7269,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.2",
|
|
|
7259
7269
|
* Generated bundle index. Do not edit.
|
|
7260
7270
|
*/
|
|
7261
7271
|
|
|
7262
|
-
export { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };
|
|
7272
|
+
export { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, ControlEvent, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormRecord, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NonNullableFormBuilder, NumberValueAccessor, PatternValidator, PristineChangeEvent as PristineEvent, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, StatusChangeEvent as StatusEvent, TouchedChangeEvent as TouchedEvent, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, VERSION, Validators, ValueChangeEvent, isFormArray, isFormControl, isFormGroup, isFormRecord, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };
|
|
7263
7273
|
//# sourceMappingURL=forms.mjs.map
|