This is the base class for FormControl, FormGroup, and FormArray.
FormControl
FormGroup
FormArray
abstract class AbstractControl<TValue = any, TRawValue extends TValue = TValue> { readonly value: TValue; get validator(): ValidatorFn | null; get asyncValidator(): AsyncValidatorFn | null; readonly parent: FormGroup<any> | FormArray<any> | null; readonly status: FormControlStatus; readonly valid: boolean; readonly invalid: boolean; readonly pending: boolean; readonly disabled: boolean; readonly enabled: boolean; readonly errors: ValidationErrors | null; readonly pristine: boolean; readonly dirty: boolean; readonly touched: boolean; readonly untouched: boolean; readonly events: Observable<ControlEvent<TValue>>; readonly valueChanges: Observable<TValue>; readonly statusChanges: Observable<FormControlStatus>; readonly updateOn: FormHooks; setValidators(validators: ValidatorFn | ValidatorFn[] | null): void; setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[] | null): void; addValidators(validators: ValidatorFn | ValidatorFn[]): void; addAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; removeValidators(validators: ValidatorFn | ValidatorFn[]): void; removeAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): void; hasValidator(validator: ValidatorFn): boolean; hasAsyncValidator(validator: AsyncValidatorFn): boolean; clearValidators(): void; clearAsyncValidators(): void; markAsTouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; markAsTouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; } | undefined): void; markAllAsTouched(opts?: { emitEvent?: boolean | undefined; }): void; markAsUntouched(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; markAsUntouched(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; markAsDirty(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; markAsDirty(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; markAsPristine(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; markAsPristine(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; markAsPending(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; markAsPending(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; disable(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; disable(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; enable(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; }): void; setParent(parent: FormGroup<any> | FormArray<any> | null): void; abstract setValue(value: TRawValue, options?: Object | undefined): void; abstract patchValue(value: TValue, options?: Object | undefined): void; abstract reset(value?: TValue | undefined, options?: Object | undefined): void; getRawValue(): any; updateValueAndValidity(opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; updateValueAndValidity(opts: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; sourceControl?: AbstractControl<any, any> | undefined; }): void; setErrors(errors: ValidationErrors | null, opts?: { emitEvent?: boolean | undefined; } | undefined): void; setErrors(errors: ValidationErrors | null, opts?: { emitEvent?: boolean | undefined; shouldHaveEmitted?: boolean | undefined; } | undefined): void; get<P extends string | readonly (string | number)[]>(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>> | null; get<P extends string | Array<string | number>>(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>> | null; getError(errorCode: string, path?: string | (string | number)[] | undefined): any; hasError(errorCode: string, path?: string | (string | number)[] | undefined): boolean; readonly root: AbstractControl<any, any>;}