import type { Observable } from 'rxjs'; import type { StateChangedEvent, TouchedEvent, ValueChangedEvent } from '../common/types'; import type { AttachmentsStore } from './attachments-store'; import type { FormComponentStateReceiver } from './form-component-state-receiver'; import type { FormController } from '../controllers/form-controller'; export interface FormComponent extends FormComponentStateReceiver { readonly id: number; readonly controller: FormController | null; readonly isValid: boolean; readonly isEmpty: boolean; readonly isDirty: boolean; readonly isTouched: boolean; readonly onStateChange: Observable>; readonly onValueChange: Observable>; readonly onTouch: Observable>; value: TValue | null; clone(): FormComponent; enable(): void; disable(): void; reset(): void; patchValue(value: TValue): void; /** * @internal */ _link(controller: FormController | null, parentStateReceiver: FormComponentStateReceiver | null, attachmentsStore: AttachmentsStore): void; /** * @internal */ _destroy(): void; }