FormControl
Отслеживает значение и статус проверки отдельного элемента управления формы.
API
interface FormControl<TValue = any> extends AbstractControl<TValue> {
defaultValue: TValue;
setValue(value: TValue, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolean | undefined; emitViewToModelChange?: boolean | undefined; } | undefined): void;
patchValue(value: TValue, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolean | undefined; emitViewToModelChange?: boolean | undefined; } | undefined): void;
reset(formState?: TValue | FormControlState<TValue> | undefined, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; overwriteDefaultValue?: boolean | undefined; } | undefined): void;
getRawValue(): TValue;
registerOnChange(fn: Function): void;
registerOnDisabledChange(fn: (isDisabled: boolean) => void): void;
readonly override value: TValue;
override get validator(): ValidatorFn | null;
override get asyncValidator(): AsyncValidatorFn | null;
override readonly parent: FormGroup<any> | FormArray<any> | null;
override readonly status: FormControlStatus;
override readonly valid: boolean;
override readonly invalid: boolean;
override readonly pending: boolean;
override readonly disabled: boolean;
override readonly enabled: boolean;
readonly override errors: ValidationErrors | null;
override readonly pristine: boolean;
override readonly dirty: boolean;
override readonly touched: boolean;
override readonly untouched: boolean;
readonly override events: any;
readonly override valueChanges: Observable<TValue>;
readonly override statusChanges: Observable<FormControlStatus>;
override readonly updateOn: FormHooks;
override setValidators(validators: ValidatorFn | ValidatorFn[] | null): void;
override setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[] | null): void;
override addValidators(validators: ValidatorFn | ValidatorFn[]): void;
override addAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void;
override removeValidators(validators: ValidatorFn | ValidatorFn[]): void;
override removeAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void;
override hasValidator(validator: ValidatorFn): boolean;
override hasAsyncValidator(validator: AsyncValidatorFn): boolean;
override clearValidators(): void;
override clearAsyncValidators(): void;
override markAsTouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override markAsTouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; } | undefined): void;
override markAllAsDirty(opts?: { emitEvent?: boolean | undefined; }): void;
override markAllAsTouched(opts?: { emitEvent?: boolean | undefined; }): void;
override markAsUntouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override markAsUntouched(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override markAsDirty(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override markAsDirty(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override markAsPristine(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override markAsPristine(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override markAsPending(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override markAsPending(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override disable(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override disable(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override enable(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }): void;
override setParent(parent: FormGroup<any> | FormArray<any> | null): void;
override updateValueAndValidity(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;
override updateValueAndValidity(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }): void;
override setErrors(errors: ValidationErrors | null, opts?: { emitEvent?: boolean | undefined; } | undefined): void;
override setErrors(errors: ValidationErrors | null, opts?: { emitEvent?: boolean | undefined; shouldHaveEmitted?: boolean | undefined; } | undefined): void;
override get<P extends string | readonly (string | number)[]>(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>, any> | null;
override get<P extends string | Array<string | number>>(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>, any> | null;
override getError(errorCode: string, path?: string | (string | number)[] | undefined): any;
override hasError(errorCode: string, path?: string | (string | number)[] | undefined): boolean;
override readonly root: AbstractControl<any, any, any>;
}
defaultValue
TValueЗначение по умолчанию этого FormControl, используемое при сбросе элемента управления без явного указания значения. Дополнительные сведения о настройке значения по умолчанию см. в разделе FormControlOptions#nonNullable.
setValue
voidЗадает новое значение элемента управления формы.
TValueНовое значение элемента управления.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolean | undefined; emitViewToModelChange?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события при изменении значения. Параметры конфигурации передаются методу * updateValueAndValidity.
-
onlySelf: если значение равно true, каждое изменение влияет только на этот элемент управления, а не на его родительский элемент. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesгенерируют события с последними статусом и значением при обновлении значения элемента управления. Если значение равно false, события не генерируются. -
emitModelToViewChange: если значение равно true или не указано (по умолчанию), каждое изменение вызывает событиеonChangeдля обновления представления. -
emitViewToModelChange: если значение равно true или не указано (по умолчанию), каждое изменение вызывает событиеngModelChangeдля обновления модели.
void
patchValue
voidЧастично задает значение элемента управления.
На этом уровне эта функция функционально идентична setValue. Она существует для симметрии с методом patchValue у FormGroups и FormArrays, где ее поведение отличается.
TValue
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; emitModelToViewChange?: boolean | undefined; emitViewToModelChange?: boolean | undefined; } | undefined
void
reset
voidСбрасывает элемент управления формы, помечая его как pristine и untouched, и сбрасывая его значение. Новым значением станет переданное значение (если оно указано), null или исходное значение, если nonNullable было задано в конструкторе с помощью FormControlOptions.
// By default, the control will reset to null.
const dog = new FormControl('spot');
dog.reset(); // dog.value is null
// If this flag is set, the control will instead reset to the initial value.
const cat = new FormControl('tabby', {nonNullable: true});
cat.reset(); // cat.value is "tabby"
// A value passed to reset always takes precedence.
const fish = new FormControl('finn', {nonNullable: true});
fish.reset('bubble'); // fish.value is "bubble"
TValue | FormControlState<TValue> | undefinedСбрасывает элемент управления, задавая исходное значение или объект, определяющий исходное значение и отключенное состояние.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; overwriteDefaultValue?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после изменения значения.
-
onlySelf: если значение равно true, каждое изменение влияет только на этот элемент управления, а не на его родительский элемент. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesгенерируют события с последними статусом и значением при сбросе элемента управления. Если значение равно false, события не генерируются. -
overwriteDefaultValue: если значение равно true, значение, использованное для сброса элемента управления, становится его новым значением по умолчанию.
void
getRawValue
TValueДля простого FormControl необработанное значение совпадает со значением.
TValue
registerOnChange
voidРегистрирует обработчик событий изменения.
FunctionМетод, вызываемый при изменении значения
void
registerOnDisabledChange
voidРегистрирует обработчик событий отключения.
(isDisabled: boolean) => voidМетод, вызываемый при изменении статуса отключения.
void
value
TValueТекущее значение элемента управления.
- Для
FormControl— текущее значение. - Для включенного
FormGroup— значения включенных элементов управления в виде объекта с парами «ключ-значение» для каждого элемента группы. - Для отключенного
FormGroup— значения всех элементов управления в виде объекта с парами «ключ-значение» для каждого элемента группы. - Для включенного
FormArray— значения включенных элементов управления в виде массива. - Для отключенного
FormArray— значения всех элементов управления в виде массива.
validator
ValidatorFn | nullВозвращает функцию, которая синхронно определяет допустимость этого элемента управления. Если добавлено несколько валидаторов, возвращается одна составная функция. Дополнительные сведения см. в разделе Validators.compose().
validator
ValidatorFn | nullasyncValidator
AsyncValidatorFn | nullВозвращает функцию, которая асинхронно определяет допустимость этого элемента управления. Если добавлено несколько валидаторов, возвращается одна составная функция. Дополнительные сведения см. в разделе Validators.compose().
asyncValidator
AsyncValidatorFn | nullstatus
FormControlStatusСтатус проверки элемента управления.
valid
booleanЭлемент управления является valid, если его status имеет значение VALID.
invalid
booleanЭлемент управления является invalid, если его status имеет значение INVALID.
pending
booleanЭлемент управления находится в состоянии pending, если его status имеет значение PENDING.
disabled
booleanЭлемент управления является disabled, если его status имеет значение DISABLED.
Отключенные элементы управления не проходят проверку и не включаются в совокупное значение родительских элементов управления.
enabled
booleanЭлемент управления является enabled, пока его status не имеет значения DISABLED.
errors
ValidationErrors | nullОбъект, содержащий ошибки, возникшие при неудачной проверке, или null, если ошибок нет.
pristine
booleanЭлемент управления является pristine, если пользователь еще не изменял его значение в пользовательском интерфейсе.
dirty
booleanЭлемент управления является dirty, если пользователь изменил его значение в пользовательском интерфейсе.
touched
booleanЗначение True, если элемент управления помечен как touched.
Элемент управления помечается как touched после того, как пользователь инициирует для него событие blur.
untouched
booleanЗначение True, если элемент управления не был помечен как затронутый.
Элемент управления является untouched, если пользователь еще не инициировал для него событие blur.
events
anyМногоадресный наблюдаемый объект, генерирующий событие при каждом изменении состояния элемента управления. Он генерирует события при изменении значения, статуса, состояния pristine или touched.
Примечание: при изменении значения событие генерируется сразу после обновления значения этого элемента управления. Значение родительского элемента управления (например, если этот FormControl является частью FormGroup) обновляется позже, поэтому обращение к значению родительского элемента управления (с помощью свойства value) из обратного вызова этого события может вернуть еще не обновленное значение. Вместо этого подпишитесь на events родительского элемента управления. Для событий других типов события генерируются после обновления родительского элемента управления.
valueChanges
Observable<TValue>Многоадресный наблюдаемый объект, генерирующий событие при каждом изменении значения элемента управления в пользовательском интерфейсе или программным способом. Он также генерирует событие при каждом вызове enable() или disable(), если в качестве аргумента функции не передан {emitEvent: false}.
Примечание: событие генерируется сразу после обновления значения этого элемента управления. Значение родительского элемента управления (например, если этот FormControl является частью FormGroup) обновляется позже, поэтому обращение к значению родительского элемента управления (с помощью свойства value) из обратного вызова этого события может вернуть еще не обновленное значение. Вместо этого подпишитесь на событие valueChanges родительского элемента управления.
statusChanges
Observable<FormControlStatus>Многоадресный наблюдаемый объект, генерирующий событие при каждом пересчете status проверки элемента управления.
updateOn
FormHooksВозвращает стратегию обновления AbstractControl (то есть событие, при котором элемент управления обновляет себя). Возможные значения: 'change' | 'blur' | 'submit' Значение по умолчанию: 'change'
setValidators
voidЗадает синхронные валидаторы, активные для этого элемента управления. При вызове существующие синхронные валидаторы перезаписываются.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
Чтобы добавить новый валидатор, не затрагивая существующие, используйте вместо этого метод addValidators().
void
setAsyncValidators
voidЗадает асинхронные валидаторы, активные для этого элемента управления. При вызове существующие асинхронные валидаторы перезаписываются.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
Чтобы добавить новый валидатор, не затрагивая существующие, используйте вместо этого метод addAsyncValidators().
void
addValidators
voidДобавляет к этому элементу управления один или несколько синхронных валидаторов, не затрагивая другие валидаторы.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
Добавление уже существующего валидатора не окажет никакого эффекта. Если в массиве validators есть дубликаты функций-валидаторов, к элементу управления формы будет добавлен только первый экземпляр.
ValidatorFn | ValidatorFn[]Новая функция-валидатор или новые функции-валидаторы для добавления к этому элементу управления.
void
addAsyncValidators
voidДобавляет к этому элементу управления один или несколько асинхронных валидаторов, не затрагивая другие валидаторы.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
Добавление уже существующего валидатора не окажет никакого эффекта.
AsyncValidatorFn | AsyncValidatorFn[]Новая асинхронная функция-валидатор или новые функции-валидаторы для добавления к этому элементу управления.
void
removeValidators
voidУдаляет синхронный валидатор из этого элемента управления, не затрагивая другие валидаторы. Валидаторы сравниваются по ссылке на функцию; необходимо передать ссылку именно на ту функцию-валидатор, которая была задана изначально. Если указанный валидатор не найден, он игнорируется.
void
// Reference to the RequiredValidator
const ctrl = new FormControl<string | null>('', Validators.required);
ctrl.removeValidators(Validators.required);
// Reference to anonymous function inside MinValidator
const minValidator = Validators.min(3);
const ctrl = new FormControl<string | null>('', minValidator);
expect(ctrl.hasValidator(minValidator)).toEqual(true)
expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)
ctrl.removeValidators(minValidator);
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
removeAsyncValidators
voidУдаляет асинхронный валидатор из этого элемента управления, не затрагивая другие валидаторы. Валидаторы сравниваются по ссылке на функцию; необходимо передать ссылку именно на ту функцию-валидатор, которая была задана изначально. Если указанный валидатор не найден, он игнорируется.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
AsyncValidatorFn | AsyncValidatorFn[]Асинхронный валидатор или валидаторы для удаления.
void
hasValidator
booleanПроверяет, присутствует ли в этом элементе управления синхронная функция-валидатор. Переданный валидатор должен ссылаться именно на ту же функцию.
ValidatorFnВалидатор, наличие которого нужно проверить. Сравнение выполняется по ссылке на функцию.
booleanНайден ли указанный валидатор в этом элементе управления.
// Reference to the RequiredValidator const ctrl = new FormControl<number | null>(0, Validators.required); expect(ctrl.hasValidator(Validators.required)).toEqual(true) // Reference to anonymous function inside MinValidator const minValidator = Validators.min(3); const ctrl = new FormControl<number | null>(0, minValidator); expect(ctrl.hasValidator(minValidator)).toEqual(true) expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)
hasAsyncValidator
booleanПроверяет, присутствует ли в этом элементе управления асинхронная функция-валидатор. Переданный валидатор должен ссылаться именно на ту же функцию.
AsyncValidatorFnАсинхронный валидатор, наличие которого нужно проверить. Сравнение выполняется по ссылке на функцию.
booleanНайден ли указанный асинхронный валидатор в этом элементе управления.
clearValidators
voidОчищает список синхронных валидаторов.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
void
clearAsyncValidators
voidОчищает список асинхронных валидаторов.
При добавлении или удалении валидатора во время выполнения необходимо вызвать updateValueAndValidity(), чтобы новые правила проверки вступили в силу.
void
markAsTouched
2 перегрузкиПомечает элемент управления как touched. Элемент управления становится затронутым при событиях получения и потери фокуса, не изменяющих значение.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после установки отметки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не указано, помечаются все его непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событиеTouchedChangeEvent, у которого свойствоtouchedимеет значениеtrue. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; } | undefined
void
markAllAsDirty
voidПомечает элемент управления и все его дочерние элементы управления как dirty.
{ emitEvent?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после установки отметки.
-
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событиеPristineChangeEvent, у которого свойствоpristineимеет значениеfalse. Если значение равно false, события не генерируются.
void
markAllAsTouched
voidПомечает элемент управления и все его дочерние элементы управления как touched.
{ emitEvent?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после установки отметки.
-
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событиеTouchedChangeEvent, у которого свойствоtouchedимеет значениеtrue. Если значение равно false, события не генерируются.
void
markAsUntouched
2 перегрузкиПомечает элемент управления как untouched.
Если у элемента управления есть дочерние элементы, они также помечаются как untouched, а состояние touched всех родительских элементов управления пересчитывается.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после применения пометки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observableeventsгенерирует событиеTouchedChangeEvent, у которого свойствоtouchedимеет значениеfalse. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
markAsDirty
2 перегрузкиПомечает элемент управления как dirty. Элемент управления становится dirty, когда его значение изменяется через пользовательский интерфейс; сравните с markAsTouched.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после применения пометки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observableeventsгенерирует событиеPristineChangeEvent, у которого свойствоpristineимеет значениеfalse. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
markAsPristine
2 перегрузкиПомечает элемент управления как pristine.
Если у элемента управления есть дочерние элементы, они также помечаются как pristine, а состояние pristine всех родительских элементов управления пересчитывается.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления генерирует события после применения пометки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observableeventsгенерирует событиеPristineChangeEvent, у которого свойствоpristineимеет значениеtrue. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
markAsPending
2 перегрузкиПомечает элемент управления как pending.
Элемент управления находится в состоянии pending во время выполнения асинхронной проверки.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после применения пометки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observablestatusChangesгенерирует событие с последним состоянием, которым помечен элемент управления как pending, а observableeventsгенерирует событиеStatusChangeEvent, у которого свойствоstatusимеет значениеPENDING. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
disable
2 перегрузкиОтключает элемент управления. Это означает, что он не участвует в проверках и исключается из агрегированного значения любого родительского элемента. Его состояние — DISABLED.
Если у элемента управления есть дочерние элементы, они также отключаются.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после отключения элемента управления.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observablesstatusChanges,valueChangesиeventsгенерируют события с последними состоянием и значением элемента управления при его отключении. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
enable
voidВключает элемент управления. Это означает, что он участвует в проверках и учитывается в агрегированном значении родительского элемента. Его состояние пересчитывается с учетом значения и валидаторов.
По умолчанию, если у элемента управления есть дочерние элементы, они также включаются.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события при пометке как untouched.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не задано, помечаются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observablesstatusChanges,valueChangesиeventsгенерируют события с последними состоянием и значением элемента управления при его включении. Если значение равно false, события не генерируются.
void
setParent
voidupdateValueAndValidity
2 перегрузкиПересчитывает значение и состояние проверки элемента управления.
По умолчанию также обновляются значение и корректность всех его предков.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации определяют, как элемент управления распространяет изменения и генерирует события после обновлений и проверок корректности.
-
onlySelf: если значение равно true, обновляется только этот элемент управления. Если значение равно false или не задано, обновляются все непосредственные предки. Значение по умолчанию — false. -
emitEvent: если значение равно true или не задано (по умолчанию), observablesstatusChanges,valueChangesиeventsгенерируют события с последними состоянием и значением элемента управления при его обновлении. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
setErrors
2 перегрузкиЗадает ошибки элемента управления формы при запуске проверок вручную, а не автоматически.
Вызов setErrors также обновляет корректность родительского элемента управления.
Примечание. Результаты следующего запуска проверки всегда перезаписывают ошибки, заданные вручную.
{ emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после задания ошибок элемента управления.
-
emitEvent: если значение равно true или не задано (по умолчанию), observablestatusChangesгенерирует событие после задания ошибок.
void
Задание ошибок элемента управления вручную
const login = new FormControl('someLogin');
login.setErrors({
notUnique: true
});
expect(login.valid).toEqual(false);
expect(login.errors).toEqual({ notUnique: true });
login.setValue('someOtherLogin');
expect(login.valid).toEqual(true);
{ emitEvent?: boolean | undefined; shouldHaveEmitted?: boolean | undefined; } | undefined
void
get
2 перегрузкиПолучает дочерний элемент управления по имени или пути к нему.
Эта сигнатура get поддерживает строки и массивы const (.get(['foo', 'bar'] as const)).
P
AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>, any> | null
Получает дочерний элемент управления по имени или пути к нему.
Эта сигнатура для get поддерживает неконстантные (изменяемые) массивы. Выводимый тип будет менее точным, поэтому по возможности используйте массив readonly.
P
AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>, any> | null
getError
anyВозвращает данные об ошибке для элемента управления, указанного путем.
stringКод ошибки для проверки.
string | (string | number)[] | undefinedСписок имен элементов управления, определяющий путь от текущего элемента управления к элементу, для которого нужно проверить ошибки.
anyДанные для указанной ошибки. Если элемент управления или ошибка отсутствует, возвращается null.
Например, для следующей FormGroup:
form = new FormGroup({
address: new FormGroup({ street: new FormControl() })
});
Путь от корневой формы к элементу управления 'street' будет таким: 'address' -> 'street'.
Его можно передать этому методу в одном из двух форматов:
- Массив строк с именами элементов управления, например
['address', 'street'] - Список имен элементов управления, разделенных точками и записанных одной строкой, например
'address.street'
hasError
booleanПроверяет, есть ли у элемента управления, указанного путем, заданная ошибка.
stringКод ошибки для проверки.
string | (string | number)[] | undefinedСписок имен элементов управления, определяющий путь от текущего элемента управления к элементу, для которого нужно проверить ошибки.
booleanНаличие указанной ошибки у элемента управления по заданному пути.
Если элемент управления отсутствует, возвращается false.
Например, для следующей FormGroup:
form = new FormGroup({
address: new FormGroup({ street: new FormControl() })
});
Путь от корневой формы к элементу управления 'street' будет таким: 'address' -> 'street'.
Его можно передать этому методу в одном из двух форматов:
- Массив строк с именами элементов управления, например
['address', 'street'] - Список имен элементов управления, разделенных точками и записанных одной строкой, например
'address.street'
Если путь не задан, этот метод проверяет наличие ошибки у текущего элемента управления.
root
AbstractControl<any, any, any>Возвращает предка верхнего уровня для этого элемента управления.
Описание
Отслеживает значение и состояние проверки отдельного элемента управления формы.
Это один из четырех основных строительных блоков форм Angular наряду с FormGroup, FormArray и FormRecord. Класс наследуется от AbstractControl, который реализует большую часть базовых функций для доступа к значению, состоянию проверки, взаимодействиям с пользователем и событиям.
FormControl принимает один обобщенный аргумент, описывающий тип значения. Этот аргумент всегда неявно включает null, поскольку элемент управления можно сбросить. Чтобы изменить это поведение, задайте nonNullable или см. примечания по использованию ниже.
Примечания по использованию
Инициализация элементов управления формы
Создайте FormControl с начальным значением.
const control = new FormControl('some value');
console.log(control.value); // 'some value'
В следующем примере элемент управления инициализируется объектом состояния формы. В этом случае обязательны ключи value и disabled.
const control = new FormControl({ value: 'n/a', disabled: true });
console.log(control.value); // 'n/a'
console.log(control.status); // 'DISABLED'
В следующем примере элемент управления инициализируется синхронным валидатором.
const control = new FormControl('', Validators.required);
console.log(control.value); // ''
console.log(control.status); // 'INVALID'
В следующем примере элемент управления инициализируется с помощью объекта параметров.
const control = new FormControl('', {
validators: Validators.required,
asyncValidators: myAsyncValidator
}); Единственный аргумент типа
FormControl принимает обобщенный аргумент, описывающий тип значения. В большинстве случаев этот аргумент будет выведен автоматически.
Если элемент управления инициализируется значением null или вы хотите указать более широкий тип, можно задать аргумент явно:
let fc = new FormControl<string|null>(null);
fc.setValue('foo');
Обратите внимание, что null всегда добавляется к типу элемента управления. Это связано с тем, что элемент управления станет null при вызове reset. Это поведение можно изменить, задав {nonNullable: true}.
Настройка обновления элемента управления при событии blur
Задайте для параметра updateOn значение 'blur', чтобы обновление происходило при событии blur event.
const control = new FormControl('', { updateOn: 'blur' }); Настройка обновления элемента управления при событии submit
Задайте для параметра updateOn значение 'submit', чтобы обновление происходило при событии submit event.
const control = new FormControl('', { updateOn: 'submit' }); Сброс элемента управления до определенного значения
Чтобы сбросить элемент управления до определенного состояния формы, передайте отдельное значение или объект состояния формы, содержащий и значение, и состояние отключения (это единственные два свойства, которые нельзя вычислить).
const control = new FormControl('Nancy');
console.log(control.value); // 'Nancy'
control.reset('Drew');
console.log(control.value); // 'Drew' Сброс элемента управления до исходного значения
Если требуется всегда сбрасывать элемент управления до исходного значения, а не до null, можно передать параметр nonNullable:
const control = new FormControl('Nancy', {nonNullable: true});
console.log(control.value); // 'Nancy'
control.reset();
console.log(control.value); // 'Nancy' Сброс элемента управления до исходного значения и отключенного состояния
const control = new FormControl('Nancy');
console.log(control.value); // 'Nancy'
console.log(control.status); // 'VALID'
control.reset({ value: 'Drew', disabled: true });
console.log(control.value); // 'Drew'
console.log(control.status); // 'DISABLED'
Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/forms/FormControl