## API Report File for "@angular/forms" > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts import { AfterViewInit } from '@angular/core'; import { ChangeDetectorRef } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import * as i0 from '@angular/core'; import { InjectionToken } from '@angular/core'; import { Injector } from '@angular/core'; import { ModuleWithProviders } from '@angular/core'; import { Observable } from 'rxjs'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { Renderer2 } from '@angular/core'; import { SimpleChanges } from '@angular/core'; import { Version } from '@angular/core'; // @public export abstract class AbstractControl { constructor(validators: ValidatorFn | ValidatorFn[] | null, asyncValidators: AsyncValidatorFn | AsyncValidatorFn[] | null); addAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; addValidators(validators: ValidatorFn | ValidatorFn[]): void; get asyncValidator(): AsyncValidatorFn | null; set asyncValidator(asyncValidatorFn: AsyncValidatorFn | null); clearAsyncValidators(): void; clearValidators(): void; get dirty(): boolean; disable(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; get disabled(): boolean; enable(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; get enabled(): boolean; readonly errors: ValidationErrors | null; readonly events: Observable>; get

(path: P): AbstractControl<ɵGetProperty> | null; get

>(path: P): AbstractControl<ɵGetProperty> | null; getError(errorCode: string, path?: Array | string): any; getRawValue(): any; hasAsyncValidator(validator: AsyncValidatorFn): boolean; hasError(errorCode: string, path?: Array | string): boolean; hasValidator(validator: ValidatorFn): boolean; get invalid(): boolean; markAllAsDirty(opts?: { emitEvent?: boolean; }): void; markAllAsTouched(opts?: { emitEvent?: boolean; }): void; markAsDirty(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsPending(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsPristine(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsTouched(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsUntouched(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; get parent(): FormGroup | FormArray | null; abstract patchValue(value: TValue, options?: Object): void; get pending(): boolean; get pristine(): boolean; removeAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; removeValidators(validators: ValidatorFn | ValidatorFn[]): void; abstract reset(value?: TValueWithOptionalControlStates, options?: Object): void; get root(): AbstractControl; setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[] | null): void; setErrors(errors: ValidationErrors | null, opts?: { emitEvent?: boolean; }): void; setParent(parent: FormGroup | FormArray | null): void; setValidators(validators: ValidatorFn | ValidatorFn[] | null): void; abstract setValue(value: TRawValue, options?: Object): void; get status(): FormControlStatus; readonly statusChanges: Observable; get touched(): boolean; get untouched(): boolean; get updateOn(): FormHooks; updateValueAndValidity(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; get valid(): boolean; get validator(): ValidatorFn | null; set validator(validatorFn: ValidatorFn | null); readonly value: TValue; readonly valueChanges: Observable; } // @public export abstract class AbstractControlDirective { get asyncValidator(): AsyncValidatorFn | null; abstract get control(): AbstractControl | null; get dirty(): boolean | null; get disabled(): boolean | null; get enabled(): boolean | null; get errors(): ValidationErrors | null; getError(errorCode: string, path?: Array | string): any; hasError(errorCode: string, path?: Array | string): boolean; get invalid(): boolean | null; get path(): string[] | null; get pending(): boolean | null; get pristine(): boolean | null; reset(value?: any): void; get status(): string | null; get statusChanges(): Observable | null; get touched(): boolean | null; get untouched(): boolean | null; get valid(): boolean | null; get validator(): ValidatorFn | null; get value(): any; get valueChanges(): Observable | null; } // @public export interface AbstractControlOptions { asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[] | null; updateOn?: 'change' | 'blur' | 'submit'; validators?: ValidatorFn | ValidatorFn[] | null; } // @public export abstract class AbstractFormDirective extends ControlContainer implements Form, OnChanges, OnDestroy { constructor(validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[], callSetDisabledState?: SetDisabledStateOption | undefined); addControl(dir: FormControlName): FormControl; addFormArray(dir: FormArrayName): void; addFormGroup(dir: FormGroupName): void; abstract get control(): AbstractControl; directives: FormControlName[]; abstract form: AbstractControl; get formDirective(): Form; getControl(dir: FormControlName): FormControl; getFormArray(dir: FormArrayName): FormArray; getFormGroup(dir: FormGroupName): FormGroup; // (undocumented) ngOnChanges(changes: SimpleChanges): void; // (undocumented) ngOnDestroy(): void; abstract ngSubmit: EventEmitter; // (undocumented) protected onChanges(changes: SimpleChanges): void; // (undocumented) protected onDestroy(): void; onReset(): void; onSubmit($event: Event): boolean; get path(): string[]; removeControl(dir: FormControlName): void; removeFormArray(dir: FormArrayName): void; removeFormGroup(dir: FormGroupName): void; resetForm(value?: any, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; get submitted(): boolean; updateModel(dir: FormControlName, value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class AbstractFormGroupDirective extends ControlContainer implements OnInit, OnDestroy { get control(): FormGroup; get formDirective(): Form | null; ngOnDestroy(): void; ngOnInit(): void; get path(): string[]; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export interface AsyncValidator extends Validator { validate(control: AbstractControl): Promise | Observable; } // @public export interface AsyncValidatorFn { // (undocumented) (control: AbstractControl): Promise | Observable; } // @public export class CheckboxControlValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class CheckboxRequiredValidator extends RequiredValidator { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export const COMPOSITION_BUFFER_MODE: InjectionToken; // @public export type ControlConfig = [ T | FormControlState, (ValidatorFn | ValidatorFn[])?, (AsyncValidatorFn | AsyncValidatorFn[])? ]; // @public export abstract class ControlContainer extends AbstractControlDirective { get formDirective(): Form | null; name: string | number | null; get path(): string[] | null; } // @public export abstract class ControlEvent { abstract readonly source: AbstractControl; } // @public export interface ControlValueAccessor { registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState?(isDisabled: boolean): void; writeValue(obj: any): void; } // @public export class DefaultValueAccessor extends BaseControlValueAccessor implements ControlValueAccessor { constructor(renderer: Renderer2, elementRef: ElementRef, _compositionMode: boolean); writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class EmailValidator extends AbstractValidatorDirective { email: boolean | string; enabled(input: boolean): boolean; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export interface Form { addControl(dir: NgControl): void; addFormGroup(dir: AbstractFormGroupDirective): void; getControl(dir: NgControl): FormControl; getFormGroup(dir: AbstractFormGroupDirective): FormGroup; removeControl(dir: NgControl): void; removeFormGroup(dir: AbstractFormGroupDirective): void; updateModel(dir: NgControl, value: any): void; } // @public export class FormArray = any> extends AbstractControl<ɵTypedOrUntyped, any>, ɵTypedOrUntyped, any>> { constructor(controls: Array, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); at(index: number): ɵTypedOrUntyped>; clear(options?: { emitEvent?: boolean; }): void; // (undocumented) controls: ɵTypedOrUntyped, Array>>; getRawValue(): ɵFormArrayRawValue; insert(index: number, control: TControl, options?: { emitEvent?: boolean; }): void; get length(): number; patchValue(value: ɵFormArrayValue, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; push(control: TControl | Array, options?: { emitEvent?: boolean; }): void; removeAt(index: number, options?: { emitEvent?: boolean; }): void; reset(value?: ɵTypedOrUntyped, any>, options?: { onlySelf?: boolean; emitEvent?: boolean; overwriteDefaultValue?: boolean; }): void; setControl(index: number, control: TControl, options?: { emitEvent?: boolean; }): void; setValue(value: ɵFormArrayRawValue, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; } // @public export class FormArrayDirective extends AbstractFormDirective { get control(): FormArray; form: FormArray; ngSubmit: EventEmitter; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class FormArrayName extends ControlContainer implements OnInit, OnDestroy { constructor(parent: ControlContainer, validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[]); get control(): FormArray; get formDirective(): AbstractFormDirective | null; name: string | number | null; ngOnDestroy(): void; ngOnInit(): void; get path(): string[]; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class FormBuilder { array(controls: Array, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormArray<ɵElement>; // @deprecated (undocumented) control(formState: T | FormControlState, opts: FormControlOptions & { initialValueIsDefault: true; }): FormControl; // (undocumented) control(formState: T | FormControlState, opts: FormControlOptions & { nonNullable: true; }): FormControl; // @deprecated (undocumented) control(formState: T | FormControlState, opts: FormControlOptions, asyncValidator: AsyncValidatorFn | AsyncValidatorFn[]): FormControl; // (undocumented) control(formState: T | FormControlState, validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormControl; group(controls: T, options?: AbstractControlOptions | null): FormGroup<ɵNullableFormControls>; // @deprecated group(controls: { [key: string]: any; }, options: { [key: string]: any; }): FormGroup; get nonNullable(): NonNullableFormBuilder; record(controls: { [key: string]: T; }, options?: AbstractControlOptions | null): FormRecord<ɵElement>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } // @public export interface FormControl extends AbstractControl { defaultValue: TValue; getRawValue(): TValue; patchValue(value: TValue, options?: { onlySelf?: boolean; emitEvent?: boolean; emitModelToViewChange?: boolean; emitViewToModelChange?: boolean; }): void; registerOnChange(fn: Function): void; registerOnDisabledChange(fn: (isDisabled: boolean) => void): void; reset(formState?: TValue | FormControlState, options?: { onlySelf?: boolean; emitEvent?: boolean; overwriteDefaultValue?: boolean; }): void; setValue(value: TValue, options?: { onlySelf?: boolean; emitEvent?: boolean; emitModelToViewChange?: boolean; emitViewToModelChange?: boolean; }): void; } // @public (undocumented) export const FormControl: ɵFormControlCtor; // @public export class FormControlDirective extends NgControl implements OnChanges, OnDestroy { constructor(validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[], valueAccessors: ControlValueAccessor[], _ngModelWarningConfig: string | null, callSetDisabledState?: SetDisabledStateOption | undefined); get control(): FormControl; form: FormControl; set isDisabled(isDisabled: boolean); // @deprecated (undocumented) model: any; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; get path(): string[]; // @deprecated (undocumented) update: EventEmitter; viewModel: any; viewToModelUpdate(newValue: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class FormControlName extends NgControl implements OnChanges, OnDestroy { constructor(parent: ControlContainer, validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[], valueAccessors: ControlValueAccessor[], _ngModelWarningConfig: string | null); readonly control: FormControl; get formDirective(): any; set isDisabled(isDisabled: boolean); // @deprecated (undocumented) model: any; name: string | number | null; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; get path(): string[]; // @deprecated (undocumented) update: EventEmitter; viewToModelUpdate(newValue: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export interface FormControlOptions extends AbstractControlOptions { // @deprecated (undocumented) initialValueIsDefault?: boolean; nonNullable?: boolean; } // @public export interface FormControlState { // (undocumented) disabled: boolean; // (undocumented) value: T; } // @public export type FormControlStatus = 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED'; // @public export class FormGroup; } = any> extends AbstractControl<ɵTypedOrUntyped, any>, ɵTypedOrUntyped, any>, ɵTypedOrUntyped, any>> { constructor(controls: TControl, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); addControl(this: FormGroup<{ [key: string]: AbstractControl; }>, name: string, control: AbstractControl, options?: { emitEvent?: boolean; }): void; // (undocumented) addControl(name: K, control: Required[K], options?: { emitEvent?: boolean; }): void; contains(controlName: K): boolean; // (undocumented) contains(this: FormGroup<{ [key: string]: AbstractControl; }>, controlName: string): boolean; // (undocumented) controls: ɵTypedOrUntyped; }>; getRawValue(): ɵTypedOrUntyped, any>; patchValue(value: ɵFormGroupValue, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; registerControl(name: K, control: TControl[K]): TControl[K]; // (undocumented) registerControl(this: FormGroup<{ [key: string]: AbstractControl; }>, name: string, control: AbstractControl): AbstractControl; // (undocumented) removeControl(this: FormGroup<{ [key: string]: AbstractControl; }>, name: string, options?: { emitEvent?: boolean; }): void; // (undocumented) removeControl(name: ɵOptionalKeys & S, options?: { emitEvent?: boolean; }): void; reset(value?: ɵTypedOrUntyped, any>, options?: { onlySelf?: boolean; emitEvent?: boolean; overwriteDefaultValue?: boolean; }): void; setControl(name: K, control: TControl[K], options?: { emitEvent?: boolean; }): void; // (undocumented) setControl(this: FormGroup<{ [key: string]: AbstractControl; }>, name: string, control: AbstractControl, options?: { emitEvent?: boolean; }): void; setValue(value: ɵFormGroupRawValue, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; } // @public export class FormGroupDirective extends AbstractFormDirective { get control(): FormGroup; form: FormGroup; ngSubmit: EventEmitter; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class FormGroupName extends AbstractFormGroupDirective implements OnInit, OnDestroy { constructor(parent: ControlContainer, validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[]); name: string | number | null; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class FormRecord extends FormGroup<{ [key: string]: TControl; }> { } // @public (undocumented) export interface FormRecord { addControl(name: string, control: TControl, options?: { emitEvent?: boolean; }): void; contains(controlName: string): boolean; getRawValue(): { [key: string]: ɵRawValue; }; patchValue(value: { [key: string]: ɵValue; }, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; registerControl(name: string, control: TControl): TControl; removeControl(name: string, options?: { emitEvent?: boolean; }): void; reset(value?: { [key: string]: ɵValue | FormControlState<ɵValue>; }, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; setControl(name: string, control: TControl, options?: { emitEvent?: boolean; }): void; setValue(value: { [key: string]: ɵRawValue; }, options?: { onlySelf?: boolean; emitEvent?: boolean; }): void; } // @public export class FormResetEvent extends ControlEvent { constructor(source: AbstractControl); // (undocumented) readonly source: AbstractControl; } // @public export class FormsModule { static withConfig(opts: { callSetDisabledState?: SetDisabledStateOption; }): ModuleWithProviders; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public export class FormSubmittedEvent extends ControlEvent { constructor(source: AbstractControl); // (undocumented) readonly source: AbstractControl; } // @public export const isFormArray: (control: unknown) => control is FormArray; // @public export const isFormControl: (control: unknown) => control is FormControl; // @public export const isFormGroup: (control: unknown) => control is FormGroup; // @public export const isFormRecord: (control: unknown) => control is FormRecord; // @public export class MaxLengthValidator extends AbstractValidatorDirective { maxlength: string | number | null; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class MaxValidator extends AbstractValidatorDirective { max: string | number | null; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class MinLengthValidator extends AbstractValidatorDirective { minlength: string | number | null; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class MinValidator extends AbstractValidatorDirective { min: string | number | null; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export const NG_ASYNC_VALIDATORS: InjectionToken; // @public export const NG_VALIDATORS: InjectionToken; // @public export const NG_VALUE_ACCESSOR: InjectionToken; // @public export abstract class NgControl extends AbstractControlDirective { name: string | number | null; valueAccessor: ControlValueAccessor | null; abstract viewToModelUpdate(newValue: any): void; } // @public export class NgControlStatus extends AbstractControlStatus { constructor(cd: NgControl); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class NgControlStatusGroup extends AbstractControlStatus { constructor(cd: ControlContainer); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class NgForm extends ControlContainer implements Form, AfterViewInit { constructor(validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[], callSetDisabledState?: SetDisabledStateOption | undefined); addControl(dir: NgModel): void; addFormGroup(dir: NgModelGroup): void; get control(): FormGroup; get controls(): { [key: string]: AbstractControl; }; form: FormGroup; get formDirective(): Form; getControl(dir: NgModel): FormControl; getFormGroup(dir: NgModelGroup): FormGroup; ngAfterViewInit(): void; ngSubmit: EventEmitter; onReset(): void; onSubmit($event: Event): boolean; options: { updateOn?: FormHooks; }; get path(): string[]; removeControl(dir: NgModel): void; removeFormGroup(dir: NgModelGroup): void; resetForm(value?: any): void; setValue(value: { [key: string]: any; }): void; get submitted(): boolean; updateModel(dir: NgControl, value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class NgModel extends NgControl implements OnChanges, OnDestroy { constructor(parent: ControlContainer, validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[], valueAccessors: ControlValueAccessor[], _changeDetectorRef?: (ChangeDetectorRef | null) | undefined, callSetDisabledState?: SetDisabledStateOption | undefined); // (undocumented) readonly control: FormControl; get formDirective(): any; isDisabled: boolean; model: any; name: string; static ngAcceptInputType_isDisabled: boolean | string; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; options: { name?: string; standalone?: boolean; updateOn?: FormHooks; }; get path(): string[]; update: EventEmitter; viewModel: any; viewToModelUpdate(newValue: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class NgModelGroup extends AbstractFormGroupDirective implements OnInit, OnDestroy { constructor(parent: ControlContainer, validators: (Validator | ValidatorFn)[], asyncValidators: (AsyncValidator | AsyncValidatorFn)[]); name: string; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class NgSelectOption implements OnDestroy { constructor(_element: ElementRef, _renderer: Renderer2, _select: SelectControlValueAccessor); id: string; ngOnDestroy(): void; set ngValue(value: any); set value(value: any); // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export abstract class NonNullableFormBuilder { abstract array(controls: Array, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormArray<ɵElement>; abstract control(formState: T | FormControlState, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): FormControl; abstract group(controls: T, options?: AbstractControlOptions | null): FormGroup<ɵNonNullableFormControls>; abstract record(controls: { [key: string]: T; }, options?: AbstractControlOptions | null): FormRecord<ɵElement>; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } // @public export class NumberValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { registerOnChange(fn: (_: number | null) => void): void; writeValue(value: number): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class PatternValidator extends AbstractValidatorDirective { pattern: string | RegExp; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class PristineChangeEvent extends ControlEvent { constructor(pristine: boolean, source: AbstractControl); // (undocumented) readonly pristine: boolean; // (undocumented) readonly source: AbstractControl; } // @public export class RadioControlValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor, OnDestroy, OnInit { constructor(renderer: Renderer2, elementRef: ElementRef, _registry: RadioControlRegistry, _injector: Injector); fireUncheck(value: any): void; formControlName: string; name: string; ngOnDestroy(): void; ngOnInit(): void; onChange: () => void; registerOnChange(fn: (_: any) => {}): void; setDisabledState(isDisabled: boolean): void; value: any; writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class RangeValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { registerOnChange(fn: (_: number | null) => void): void; writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class ReactiveFormsModule { static withConfig(opts: { warnOnNgModelWithFormControl?: 'never' | 'once' | 'always'; callSetDisabledState?: SetDisabledStateOption; }): ModuleWithProviders; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵinj: i0.ɵɵInjectorDeclaration; // (undocumented) static ɵmod: i0.ɵɵNgModuleDeclaration; } // @public export class RequiredValidator extends AbstractValidatorDirective { enabled(input: boolean): boolean; required: boolean | string; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class SelectControlValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { set compareWith(fn: (o1: any, o2: any) => boolean); registerOnChange(fn: (value: any) => any): void; value: any; writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export class SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor implements ControlValueAccessor { set compareWith(fn: (o1: any, o2: any) => boolean); registerOnChange(fn: (value: any) => any): void; value: any; writeValue(value: any): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } // @public export type SetDisabledStateOption = 'whenDisabledForLegacyCode' | 'always'; // @public export class StatusChangeEvent extends ControlEvent { constructor(status: FormControlStatus, source: AbstractControl); // (undocumented) readonly source: AbstractControl; // (undocumented) readonly status: FormControlStatus; } // @public export class TouchedChangeEvent extends ControlEvent { constructor(touched: boolean, source: AbstractControl); // (undocumented) readonly source: AbstractControl; // (undocumented) readonly touched: boolean; } // @public export type UntypedFormArray = FormArray; // @public (undocumented) export const UntypedFormArray: UntypedFormArrayCtor; // @public export class UntypedFormBuilder extends FormBuilder { array(controlsConfig: any[], validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): UntypedFormArray; control(formState: any, validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): UntypedFormControl; group(controlsConfig: { [key: string]: any; }, options?: AbstractControlOptions | null): UntypedFormGroup; // @deprecated (undocumented) group(controlsConfig: { [key: string]: any; }, options: { [key: string]: any; }): UntypedFormGroup; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } // @public export type UntypedFormControl = FormControl; // @public (undocumented) export const UntypedFormControl: UntypedFormControlCtor; // @public export type UntypedFormGroup = FormGroup; // @public (undocumented) export const UntypedFormGroup: UntypedFormGroupCtor; // @public export type ValidationErrors = { [key: string]: any; }; // @public export interface Validator { registerOnValidatorChange?(fn: () => void): void; validate(control: AbstractControl): ValidationErrors | null; } // @public export interface ValidatorFn { // (undocumented) (control: AbstractControl): ValidationErrors | null; } // @public export class Validators { static compose(validators: null): null; // (undocumented) static compose(validators: (ValidatorFn | null | undefined)[]): ValidatorFn | null; static composeAsync(validators: (AsyncValidatorFn | null)[]): AsyncValidatorFn | null; static email(control: AbstractControl): ValidationErrors | null; static max(max: number): ValidatorFn; static maxLength(maxLength: number): ValidatorFn; static min(min: number): ValidatorFn; static minLength(minLength: number): ValidatorFn; static nullValidator(control: AbstractControl): ValidationErrors | null; static pattern(pattern: string | RegExp): ValidatorFn; static required(control: AbstractControl): ValidationErrors | null; static requiredTrue(control: AbstractControl): ValidationErrors | null; } // @public export class ValueChangeEvent extends ControlEvent { constructor(value: T, source: AbstractControl); // (undocumented) readonly source: AbstractControl; // (undocumented) readonly value: T; } // @public (undocumented) export const VERSION: Version; // (No @packageDocumentation comment for this package) ```