FormGroup
Отслеживает значение и состояние валидности группы экземпляров FormControl.
API
class FormGroup<TControl extends {[K in keyof TControl]: AbstractControl<any>} = any> extends AbstractControl<
ɵTypedOrUntyped<TControl, ɵFormGroupValue<TControl>, any>,
ɵTypedOrUntyped<TControl, ɵFormGroupRawValue<TControl>, any>,
ɵTypedOrUntyped<TControl, ɵFormGroupArgumentValue<TControl>, any>
> {
constructor(controls: TControl, validatorOrOpts?: ValidatorFn | AbstractControlOptions | ValidatorFn[] | null | undefined, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null | undefined): FormGroup<TControl>;
controls: ɵTypedOrUntyped<TControl, TControl, { [key: string]: AbstractControl<any, any, any>; }>;
registerControl<K extends string & keyof TControl>(name: K, control: TControl[K]): TControl[K];
registerControl(this: FormGroup<{ [key: string]: AbstractControl<any, any, any>; }>, name: string, control: AbstractControl<any, any, any>): AbstractControl<any, any, any>;
addControl(this: FormGroup<{ [key: string]: AbstractControl<any, any, any>; }>, name: string, control: AbstractControl<any, any, any>, options?: { emitEvent?: boolean | undefined; } | undefined): void;
addControl<K extends string & keyof TControl>(name: K, control: Required<TControl>[K], options?: { emitEvent?: boolean | undefined; } | undefined): void;
removeControl(this: FormGroup<{ [key: string]: AbstractControl<any, any, any>; }>, name: string, options?: { emitEvent?: boolean | undefined; } | undefined): void;
removeControl<S extends string>(name: ɵOptionalKeys<TControl> & S, options?: { emitEvent?: boolean | undefined; } | undefined): void;
setControl<K extends string & keyof TControl>(name: K, control: TControl[K], options?: { emitEvent?: boolean | undefined; } | undefined): void;
setControl(this: FormGroup<{ [key: string]: AbstractControl<any, any, any>; }>, name: string, control: AbstractControl<any, any, any>, options?: { emitEvent?: boolean | undefined; } | undefined): void;
contains<K extends string>(controlName: K): boolean;
contains(this: FormGroup<{ [key: string]: AbstractControl<any, any, any>; }>, controlName: string): boolean;
setValue(value: ɵIsAny<TControl, { [key: string]: any; }, { [K in keyof TControl]: ɵRawValue<TControl[K]>; }>, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }): void;
patchValue(value: ɵIsAny<TControl, { [key: string]: any; }, Partial<{ [K in keyof TControl]: ɵValue<TControl[K]>; }>>, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }): void;
reset(value?: ɵTypedOrUntyped<TControl, ɵIsAny<TControl, { [key: string]: any; }, Partial<{ [K in keyof TControl]: ɵValue<TControl[K]> | FormControlState<ɵValue<TControl[K]>>; }>>, any>, options?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; overwriteDefaultValue?: boolean | undefined; }): void;
getRawValue(): ɵTypedOrUntyped<TControl, ɵIsAny<TControl, { [key: string]: any; }, { [K in keyof TControl]: ɵRawValue<TControl[K]>; }>, any>;
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>;
}
constructor
FormGroup<TControl>Создает новый экземпляр FormGroup.
TControlКоллекция дочерних элементов управления. Ключ для каждого дочернего элемента — это имя, под которым он зарегистрирован.
ValidatorFn | AbstractControlOptions | ValidatorFn[] | null | undefinedФункция синхронного валидатора, массив таких функций или объект AbstractControlOptions, содержащий функции валидации и событие, при котором она запускается.
AsyncValidatorFn | AsyncValidatorFn[] | null | undefinedОдин асинхронный валидатор или массив функций асинхронных валидаторов
FormGroup<TControl>
controls
ɵTypedOrUntyped<TControl, TControl, { [key: string]: AbstractControl<any, any, any>; }>registerControl
2 перегрузкиРегистрирует элемент управления в списке элементов управления группы. В строго типизированной группе элемент управления должен входить в тип группы (возможно, как необязательный ключ).
Этот метод не обновляет значение или валидность элемента управления. Вместо него используйте addControl.
KИмя элемента управления, регистрируемого в коллекции
TControl[K]Элемент управления для указанного имени
TControl[K]
string
AbstractControl<any, any, any>
addControl
2 перегрузкиДобавляет элемент управления в эту группу. В строго типизированной группе элемент управления должен входить в тип группы (возможно, как необязательный ключ).
Если элемент управления с указанным именем уже существует, он не будет заменен новым. Чтобы заменить существующий элемент управления, используйте метод setControl. Этот метод также обновляет значение и валидность элемента управления.
stringИмя элемента управления, добавляемого в коллекцию
{ emitEvent?: boolean | undefined; } | undefinedОпределяет, должен ли этот экземпляр FormGroup отправлять события после добавления нового элемента управления.
-
emitEvent: если значение true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesотправляют события с актуальными состоянием и значением при добавлении элемента управления. Если значение false, события не отправляются.
void
K
Required<TControl>[K]
{ emitEvent?: boolean | undefined; } | undefined
void
removeControl
2 перегрузкиstring
{ emitEvent?: boolean | undefined; } | undefined
void
ɵOptionalKeys<TControl> & S
{ emitEvent?: boolean | undefined; } | undefined
void
setControl
2 перегрузкиЗаменяет существующий элемент управления. В строго типизированной группе элемент управления должен входить в тип группы (возможно, как необязательный ключ).
Если элемент управления с указанным именем отсутствует в этой группе FormGroup, он будет добавлен.
KИмя элемента управления, заменяемого в коллекции
TControl[K]Элемент управления для указанного имени
{ emitEvent?: boolean | undefined; } | undefinedОпределяет, должен ли этот экземпляр FormGroup отправлять события после замены существующего элемента управления.
-
emitEvent: если значение true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesотправляют события с актуальными состоянием и значением при замене элемента управления новым. Если значение false, события не отправляются.
void
string
{ emitEvent?: boolean | undefined; } | undefined
void
contains
2 перегрузкиПроверяет, есть ли в группе включенный элемент управления с указанным именем.
Для отключенных элементов управления возвращает false. Чтобы проверить только наличие элемента управления в группе, используйте вместо этого get.
KИмя элемента управления, наличие которого нужно проверить в коллекции
booleanfalse для отключенных элементов управления, иначе true.
string
boolean
setValue
voidЗадает значение группы FormGroup. Метод принимает объект, соответствующий структуре группы, где имена элементов управления используются в качестве ключей.
ɵIsAny<TControl, { [key: string]: any; }, { [K in keyof TControl]: ɵRawValue<TControl[K]>; }>Новое значение элемента управления, соответствующее структуре группы.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и отправляет события после изменения значения. Параметры конфигурации передаются методу * updateValueAndValidity.
-
onlySelf: если значение true, каждое изменение влияет только на этот элемент управления, но не на его родителя. По умолчанию — false. -
emitEvent: если значение true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesотправляют события с актуальными состоянием и значением при обновлении значения элемента управления. Если значение false, события не отправляются.
void
Задание полного значения группы формы
const form = new FormGroup({
first: new FormControl(),
last: new FormControl()
});
console.log(form.value); // {first: null, last: null}
form.setValue({first: 'Nancy', last: 'Drew'});
console.log(form.value); // {first: 'Nancy', last: 'Drew'}
patchValue
voidЧастично задает значение группы FormGroup. Метод принимает объект, где имена элементов управления используются в качестве ключей, и старается сопоставить значения соответствующим элементам управления в группе.
Метод принимает как надмножества, так и подмножества группы, не вызывая ошибку.
ɵIsAny<TControl, { [key: string]: any; }, Partial<{ [K in keyof TControl]: ɵValue<TControl[K]>; }>>Объект, соответствующий структуре группы.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и отправляет события после частичного задания значения.
-
onlySelf: если значение true, каждое изменение влияет только на этот элемент управления, но не на его родителя. По умолчанию — true. -
emitEvent: если значение true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesотправляют события с актуальными состоянием и значением при обновлении значения элемента управления. Если значение false, события не отправляются. Параметры конфигурации передаются методуupdateValueAndValidity.
void
Частичное задание значения группы формы
const form = new FormGroup({
first: new FormControl(),
last: new FormControl()
});
console.log(form.value); // {first: null, last: null}
form.patchValue({first: 'Nancy'});
console.log(form.value); // {first: 'Nancy', last: null}
reset
voidСбрасывает группу FormGroup, помечает всех потомков как pristine и untouched и задает для всех потомков значения по умолчанию или null, если значения по умолчанию не указаны.
Чтобы сбросить форму до заданного состояния, передайте карту состояний, соответствующую структуре формы, где имена элементов управления используются в качестве ключей. Состояние — это отдельное значение или объект состояния формы, содержащий и значение, и статус отключения.
ɵTypedOrUntyped<TControl, ɵIsAny<TControl, { [key: string]: any; }, Partial<{ [K in keyof TControl]: ɵValue<TControl[K]> | FormControlState<ɵValue<TControl[K]>>; }>>, any>Сбрасывает элемент управления до начального значения или до объекта, определяющего начальное значение и состояние отключения.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; overwriteDefaultValue?: boolean | undefined; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и отправляет события при сбросе группы.
-
onlySelf: если значение true, каждое изменение влияет только на этот элемент управления, но не на его родителя. По умолчанию — false. -
emitEvent: если значение true или не указано (по умолчанию), оба наблюдаемых объектаstatusChangesиvalueChangesотправляют события с актуальными состоянием и значением при сбросе элемента управления. Если значение false, события не отправляются. Параметры конфигурации передаются методу* updateValueAndValidity.
void
Сброс значений группы формы
const form = new FormGroup({
first: new FormControl('first name'),
last: new FormControl('last name')
});
console.log(form.value); // {first: 'first name', last: 'last name'}
form.reset({ first: 'name', last: 'last name' });
console.log(form.value); // {first: 'name', last: 'last name'} Сброс значений и статуса отключения группы формы
const form = new FormGroup({
first: new FormControl('first name'),
last: new FormControl('last name')
});
form.reset({
first: {value: 'name', disabled: true},
last: 'last'
});
console.log(form.value); // {last: 'last'}
console.log(form.get('first').status); // 'DISABLED'
getRawValue
ɵTypedOrUntyped<TControl, ɵIsAny<TControl, { [key: string]: any; }, { [K in keyof TControl]: ɵRawValue<TControl[K]>; }>, any>Совокупное значение группы FormGroup, включая отключенные элементы управления.
Возвращает все значения независимо от статуса отключения.
ɵTypedOrUntyped<TControl, ɵIsAny<TControl, { [key: string]: any; }, { [K in keyof TControl]: ɵRawValue<TControl[K]>; }>, any>
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
booleanTrue, если элемент управления помечен как touched.
Элемент управления помечается как touched после того, как пользователь вызвал для него событие blur.
untouched
booleanTrue, если элемент управления не был помечен как затронутый
Элемент управления 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 или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событиеTouchedChangeEvent, у которого свойствоtouchedимеет значениеfalse. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
markAsDirty
2 перегрузкиПомечает элемент управления как dirty. Элемент управления становится измененным, когда его значение изменяется через пользовательский интерфейс; см. markAsTouched.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после применения этой отметки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не указано, помечаются все его непосредственные родительские элементы. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событие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 или не указано (по умолчанию), наблюдаемый объектeventsгенерирует событиеPristineChangeEvent, у которого свойствоpristineимеет значениеtrue. Если значение равно false, события не генерируются.
void
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any, any> | undefined; }
void
markAsPending
2 перегрузкиПомечает элемент управления как pending.
Элемент управления находится в состоянии ожидания, пока выполняется асинхронная проверка.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события после применения этой отметки.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не указано, помечаются все его непосредственные родительские элементы. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемый объектstatusChangesгенерирует событие с последним состоянием, в котором элемент управления помечен как ожидающий, а наблюдаемый объектeventsгенерирует событие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 или не указано (по умолчанию), наблюдаемые объектыstatusChanges,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; }Параметры конфигурации, определяющие, как элемент управления распространяет изменения и генерирует события при пометке как нетронутого.
-
onlySelf: если значение равно true, помечается только этот элемент управления. Если значение равно false или не указано, помечаются все его непосредственные родительские элементы. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемые объектыstatusChanges,valueChangesиeventsгенерируют события с последними значениями состояния и значения при включении элемента управления. Если значение равно false, события не генерируются.
void
setParent
voidupdateValueAndValidity
2 перегрузкиПересчитывает значение и состояние проверки элемента управления.
По умолчанию также обновляются значение и состояние проверки всех его родительских элементов.
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefinedПараметры конфигурации определяют, как элемент управления распространяет изменения и генерирует события после обновления и проверки допустимости.
-
onlySelf: если значение равно true, обновляется только этот элемент управления. Если значение равно false или не указано, обновляются все его непосредственные родительские элементы. Значение по умолчанию — false. -
emitEvent: если значение равно true или не указано (по умолчанию), наблюдаемые объектыstatusChanges,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 или не указано (по умолчанию), наблюдаемый объектstatusChangesгенерирует событие после задания ошибок.
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>Возвращает предка этого элемента управления верхнего уровня.
Описание
Отслеживает значение и состояние валидности группы экземпляров FormControl.
FormGroup объединяет значения каждого дочернего FormControl в один объект, используя имя каждого элемента управления в качестве ключа. Статус группы вычисляется путём сведения значений статуса её дочерних элементов. Например, если один из элементов управления в группе недействителен, недействительной становится вся группа.
FormGroup — один из четырёх основных строительных блоков для создания форм в Angular, наряду с FormControl, FormArray и FormRecord.
При создании экземпляра FormGroup передайте коллекцию дочерних элементов управления в качестве первого аргумента. Ключ каждого дочернего элемента задаёт имя элемента управления.
FormGroup предназначена для случаев, когда ключи известны заранее. Если необходимо динамически добавлять и удалять элементы управления, используйте вместо неё FormRecord.
FormGroup принимает необязательный параметр типа TControl, представляющий собой тип объекта, значениями которого являются типы вложенных элементов управления.
Примечания по использованию
Создание группы формы с двумя элементами управления
const form = new FormGroup({
first: new FormControl('Nancy', Validators.minLength(2)),
last: new FormControl('Drew'),
});
console.log(form.value); // {first: 'Nancy', last; 'Drew'}
console.log(form.status); // 'VALID' Аргумент типа и необязательные элементы управления
FormGroup принимает один обобщённый аргумент — объект, содержащий вложенные элементы управления. Обычно этот тип выводится автоматически, но при желании его всегда можно указать явно.
Если у вас есть необязательные элементы управления (то есть их можно удалить), используйте ? в типе:
const form = new FormGroup<{
first: FormControl<string|null>,
middle?: FormControl<string|null>, // Middle name is optional.
last: FormControl<string|null>,
}>({
first: new FormControl('Nancy'),
last: new FormControl('Drew'),
}); Создание группы формы с валидатором на уровне группы
Передайте валидаторы на уровне группы в качестве второго аргумента, а асинхронные валидаторы на уровне группы — в качестве третьего. Они пригодятся, когда нужно выполнить проверку, учитывающую значения нескольких дочерних элементов управления.
const form = new FormGroup({
password: new FormControl('', Validators.minLength(2)),
passwordConfirm: new FormControl('', Validators.minLength(2)),
}, passwordMatchValidator);
function passwordMatchValidator(g: FormGroup) {
return g.get('password').value === g.get('passwordConfirm').value
? null : {'mismatch': true};
}
Как и для экземпляров FormControl, валидаторы и асинхронные валидаторы можно передать в объекте параметров.
const form = new FormGroup({
password: new FormControl('')
passwordConfirm: new FormControl('')
}, { validators: passwordMatchValidator, asyncValidators: otherValidator }); Настройка свойства updateOn для всех элементов управления в группе формы
Объект параметров задаёт значение по умолчанию для свойства updateOn каждого дочернего элемента управления. Если задать updateOn в значение 'blur' на уровне группы, для всех дочерних элементов управления по умолчанию будет использоваться 'blur', если только для дочернего элемента явно не указано другое значение updateOn.
const c = new FormGroup({
one: new FormControl()
}, { updateOn: 'blur' }); Использование FormGroup с необязательными элементами управления
В FormGroup могут быть необязательные элементы управления. Такой элемент управления можно позднее удалить с помощью removeControl или не указывать при вызове reset. Необязательные элементы управления должны быть объявлены необязательными в типе группы.
const c = new FormGroup<{one?: FormControl<string>}>({
one: new FormControl('')
});
Обратите внимание, что c.value.one имеет тип string|null|undefined. Это связано с тем, что вызов c.reset({}) без необязательного ключа one приведёт к тому, что он станет null.
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/FormGroup