@al00x/forms
Version:
Angular Forms, the way it should be!
38 lines (37 loc) • 1.96 kB
TypeScript
import { AbstractControl, FormControl, FormControlState, FormControlStatus, ValidatorFn } from '@angular/forms';
import { Observable } from 'rxjs';
export interface FormControlExtended<TValue = any, DATA = any> extends FormControl<TValue> {
extended: true;
status$: Observable<FormControlStatus>;
invalid$: Observable<boolean>;
valid$: Observable<boolean>;
value$: Observable<TValue | undefined>;
error$: Observable<string | undefined>;
hasValue$: Observable<boolean>;
empty$: Observable<boolean>;
selectedItems$: Observable<any[] | undefined>;
selectedItems: any[] | undefined;
readonly$: Observable<boolean>;
readonly: boolean;
disabled$: Observable<boolean>;
enabled$: Observable<boolean>;
touched$: Observable<boolean>;
dirty$: Observable<boolean>;
showError$: Observable<boolean>;
displayText$: Observable<string | undefined>;
displayText: string | undefined;
displayControl: FormControl<string | undefined | null>;
data$: Observable<DATA | undefined>;
data: DATA | undefined;
customError?: string;
setReadonly: (value: boolean) => FormControlExtended<TValue, DATA>;
setDisplayText: (value: any | undefined) => FormControlExtended<TValue>;
setSelectedItems: (value: any[] | undefined) => FormControlExtended<TValue, DATA>;
setCustomError: (value: string | undefined) => FormControlExtended<TValue, DATA>;
setDisabled: (value: boolean) => FormControlExtended<TValue, DATA>;
getValue: () => TValue | null;
setData: (value: DATA | undefined) => FormControlExtended<TValue, DATA>;
emitStatus: () => void;
}
export declare function formControl<T, DATA = any>(value?: FormControlState<T> | T | null, validators?: ValidatorFn | ValidatorFn[], nullable?: boolean): FormControlExtended<T, DATA>;
export declare function isFormControlExtended(control: AbstractControl | FormControl | FormControlExtended): control is FormControlExtended;