FormControlDirective
Синхронизирует отдельный экземпляр FormControl с элементом управления формы.
API
class FormControlDirective extends NgControl implements OnChanges ,OnDestroy {
constructor(validators: (ValidatorFn | Validator)[], asyncValidators: (AsyncValidatorFn | AsyncValidator)[], valueAccessors: ControlValueAccessor[], _ngModelWarningConfig: string | null, callSetDisabledState?: SetDisabledStateOption | undefined, renderer?: Renderer2 | undefined, injector?: Injector | undefined): FormControlDirective;
@Input('formControl') form: FormControl<any>;
@Input('disabled') set isDisabled(value: boolean);
@Input('ngModel') model: any;
@Output('ngModelChange') update: EventEmitter<any>;
readonly path: string[];
readonly control: FormControl<any>;
viewToModelUpdate(newValue: any): void;
override name: string | number | null;
override valueAccessor: ControlValueAccessor | null;
protected override isCustomControlBased: boolean;
protected override readonly selectedValueAccessor: ControlValueAccessor | null;
protected override parseErrorsValidator: ValidatorFn | null;
protected override customControlBindings: { value?: unknown; disabled?: boolean | undefined; touched?: boolean | undefined; dirty?: boolean | undefined; valid?: boolean | undefined; invalid?: boolean | undefined; pending?: boolean | undefined; required?: boolean | undefined; errors?: ValidationErrors | null | undefined; } | null;
protected override setupCustomControl(): void;
protected override ngControlUpdate(host: ControlDirectiveHost<undefined>, bindRequired: boolean): void;
protected override readonly shouldBindRequired: boolean;
protected override removeParseErrorsValidator(control: AbstractControl<any, any, any> | null | undefined): void;
override readonly value: any;
override readonly valid: boolean | null;
override readonly invalid: boolean | null;
override readonly pending: boolean | null;
override readonly disabled: boolean | null;
override readonly enabled: boolean | null;
override readonly errors: ValidationErrors | null;
override readonly pristine: boolean | null;
override readonly dirty: boolean | null;
override readonly touched: boolean | null;
override readonly status: string | null;
override readonly untouched: boolean | null;
override readonly statusChanges: any;
override readonly valueChanges: any;
override readonly validator: ValidatorFn | null;
override readonly asyncValidator: AsyncValidatorFn | null;
override reset(value?: any): void;
override hasError(errorCode: string, path?: string | (string | number)[] | undefined): boolean;
override getError(errorCode: string, path?: string | (string | number)[] | undefined): any;
}
constructor
FormControlDirectivestring | null
FormControlDirective
form
FormControl<any>Отслеживает экземпляр FormControl, связанный с директивой.
isDisabled
booleanВ режиме разработки выводит предупреждение о том, что это свойство не следует использовать с реактивными формами.
model
anyupdate
EventEmitter<any>path
string[]Возвращает массив, представляющий путь от корневой формы к этому элементу управления. Каждый индекс — это строковое имя элемента управления на соответствующем уровне.
control
FormControl<any>FormControl, связанный с этой директивой.
viewToModelUpdate
voidУстанавливает новое значение модели представления и генерирует событие ngModelChange.
anyНовое значение модели представления.
void
name
string | number | nullИмя элемента управления
valueAccessor
ControlValueAccessor | nullАксессор значения элемента управления
isCustomControlBased
booleanselectedValueAccessor
ControlValueAccessor | nullparseErrorsValidator
ValidatorFn | nullФункция-валидатор, возвращающая текущие ошибки разбора.
customControlBindings
{ value?: unknown; disabled?: boolean | undefined; touched?: boolean | undefined; dirty?: boolean | undefined; valid?: boolean | undefined; invalid?: boolean | undefined; pending?: boolean | undefined; required?: boolean | undefined; errors?: ValidationErrors | null | undefined; } | nullОтслеживает последние связанные значения, чтобы избежать ненужных обновлений FVC.
setupCustomControl
voidvoid
ngControlUpdate
voidControlDirectiveHost<undefined>
boolean
void
shouldBindRequired
booleanСледует ли элементу управления привязывать свойство required (в режиме пользовательского элемента управления).
Может быть переопределено подклассами, которые обрабатывают required иначе.
removeParseErrorsValidator
voidvoid
value
anyВозвращает значение элемента управления, если он существует; в противном случае — null.
valid
boolean | nullСообщает, является ли элемент управления допустимым. Элемент управления считается допустимым, если для текущего значения отсутствуют ошибки валидации. Если элемент управления отсутствует, возвращается null.
invalid
boolean | nullСообщает, является ли элемент управления недопустимым, то есть содержит ли введённое значение ошибку. Если элемент управления отсутствует, возвращается null.
pending
boolean | nullСообщает, находится ли элемент управления в ожидании: выполняется асинхронная валидация, и ошибки для введённого значения ещё недоступны. Если элемент управления отсутствует, возвращается null.
disabled
boolean | nullСообщает, отключён ли элемент управления, то есть отключён ли он в пользовательском интерфейсе, исключён ли из проверок валидации и из агрегированных значений родительских элементов управления. Если элемент управления отсутствует, возвращается null.
enabled
boolean | nullСообщает, включён ли элемент управления, то есть учитывается ли он при вычислении допустимости или значения родительских элементов управления. Если элемент управления отсутствует, возвращается null.
errors
ValidationErrors | nullВозвращает ошибки валидации элемента управления. Если элемент управления отсутствует, возвращается null.
pristine
boolean | nullСообщает, является ли элемент управления неизменённым, то есть изменял ли пользователь значение в интерфейсе. Если элемент управления отсутствует, возвращается null.
dirty
boolean | nullСообщает, является ли элемент управления изменённым, то есть изменил ли пользователь значение в интерфейсе. Если элемент управления отсутствует, возвращается null.
touched
boolean | nullСообщает, затрагивал ли пользователь элемент управления, то есть вызвал ли для него событие blur. Если элемент управления отсутствует, возвращается null.
status
string | nullВозвращает статус валидации элемента управления. Возможные значения: 'VALID', 'INVALID', 'DISABLED' и 'PENDING'. Если элемент управления отсутствует, возвращается null.
untouched
boolean | nullСообщает, что пользователь ещё не затрагивал элемент управления, то есть не вызывал для него событие blur. Если элемент управления отсутствует, возвращается null.
statusChanges
anyВозвращает мультикастовый наблюдаемый объект, который отправляет статус валидации при каждом его вычислении для элемента управления. Если элемент управления отсутствует, возвращается null.
valueChanges
anyВозвращает мультикастовый наблюдаемый объект изменений значения элемента управления, который отправляет данные при каждом изменении значения в пользовательском интерфейсе или программно. Если элемент управления отсутствует, возвращается null.
validator
ValidatorFn | nullФункция синхронной валидации, объединяющая все синхронные валидаторы, зарегистрированные в этой директиве.
asyncValidator
AsyncValidatorFn | nullФункция асинхронной валидации, объединяющая все асинхронные валидаторы, зарегистрированные в этой директиве.
reset
voidСбрасывает элемент управления, устанавливая указанное значение, если он существует.
any
void
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'
Если путь не указан, этот метод проверяет наличие ошибки у текущего элемента управления.
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'
Описание
Синхронизирует отдельный экземпляр FormControl с элементом управления формы.
Обратите внимание: поддержка использования входного свойства ngModel и события ngModelChange с директивами реактивных форм объявлена устаревшей в Angular v6 и будет удалена в одной из будущих версий Angular.
Экспортируется из
Примечания по использованию
В следующем примере показано, как зарегистрировать отдельный элемент управления и задать для него значение.
import {Component} from '@angular/core';
import {FormControl, Validators} from '@angular/forms';
@Component({
selector: 'example-app',
template: `
<input [formControl]="control" />
<p>Value: {{ control.value }}</p>
<p>Validation status: {{ control.status }}</p>
<button (click)="setValue()">Set value</button>
`,
standalone: false,
})
export class SimpleFormControl {
control: FormControl = new FormControl('value', Validators.minLength(2));
setValue() {
this.control.setValue('new value');
}
}
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/FormControlDirective