This is the base class for FormControl, FormGroup, and FormArray.
FormControl
FormGroup
FormArray
abstract class AbstractControl<TValue, TRawValue extends TValue> { readonly value: TValue; get validator(): ValidatorFn; get asyncValidator(): AsyncValidatorFn; readonly parent: FormGroup<any> | FormArray<any>; readonly status: FormControlStatus; readonly valid: boolean; readonly invalid: boolean; readonly pending: boolean; readonly disabled: boolean; readonly enabled: boolean; readonly errors: ValidationErrors; 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[]): void; setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): 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; emitEvent?: boolean; }): void; markAsTouched(opts?: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; markAllAsTouched(opts?: { emitEvent?: boolean; }): void; markAsUntouched(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsUntouched(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; markAsDirty(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsDirty(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; markAsPristine(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsPristine(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; markAsPending(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; markAsPending(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; disable(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; disable(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; enable(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; setParent(parent: FormGroup<any> | FormArray<any>): void; abstract setValue(value: TRawValue, options?: Object): void; abstract patchValue(value: TValue, options?: Object): void; abstract reset(value?: TValue, options?: Object): void; getRawValue(): any; updateValueAndValidity(opts?: { onlySelf?: boolean; emitEvent?: boolean; }): void; updateValueAndValidity(opts: { onlySelf?: boolean; emitEvent?: boolean; sourceControl?: AbstractControl<any, any>; }): void; setErrors(errors: ValidationErrors, opts?: { emitEvent?: boolean; }): void; setErrors(errors: ValidationErrors, opts?: { emitEvent?: boolean; shouldHaveEmitted?: boolean; }): void; get(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>>; get(path: P): AbstractControl<ɵGetProperty<TRawValue, P>, ɵGetProperty<TRawValue, P>>; getError(errorCode: string, path?: string | (string | number)[]): any; hasError(errorCode: string, path?: string | (string | number)[]): boolean; readonly root: AbstractControl<any, any>;}