reactive-forms-typed
Version:
> Integrating Angular Reactive Forms with Typescript
71 lines (70 loc) • 3.23 kB
TypeScript
import { AbstractControl as NgAbstractControl, FormControl as NgFormControl, FormGroup as NgFormGroup, FormArray as NgFormArray } from "@angular/forms";
import { Observable } from "rxjs";
import { IFormGroupPrivates } from "./FormTypeBuilder.extensions";
interface AbstractControl<T = any> extends NgAbstractControl {
readonly valueChanges: Observable<T>;
readonly value: T;
setValue(value: T, options?: Object): void;
get<K extends keyof T>(path: K): AbstractControl<T[K]>;
get<S>(path: (string | number)[]): AbstractControl<S>;
get(path: (string | number)[]): AbstractControl<any>;
}
interface FormControl<T = any, TParent = any> extends NgFormControl {
readonly parent: FormGroup<TParent> | FormArray<TParent>;
readonly valueChanges: Observable<T>;
readonly value: T;
setValue(value: T, options?: Object): void;
get<K extends keyof T>(path: K): AbstractControl<T[K]>;
get<S>(path: (string | number)[]): AbstractControl<S>;
get(path: (string | number)[]): AbstractControl<any>;
}
interface FormGroup<T = any> extends NgFormGroup, IFormGroupPrivates {
readonly controls: {
[P in keyof T]: AbstractControl<T[P]>;
};
readonly valueChanges: Observable<T>;
readonly value: T;
get<K extends keyof T>(path: K): AbstractControl<T[K]>;
get<S>(path: (string | number)[]): AbstractControl<S>;
get(path: (string | number)[]): AbstractControl<any>;
registerControl<K extends keyof T>(name: keyof K, control: AbstractControl<T[K]>): AbstractControl<T[K]>;
addControl<K extends keyof T>(name: keyof K, control: AbstractControl<T[K]>): void;
setValue(value: T, options?: Object): void;
patchValue(value: T, options?: Object): void;
getRawValue(): T;
setErrors(config: any): any;
setFormErrors(config: {
[p in keyof T]: any;
}): any;
setFormControlErrors(string: keyof T, config: {
[key: string]: any;
}): any;
markAsSubmitted(): void;
onInit(): void;
isSubmitted(): boolean;
addFormControlValidityTracker(fromControl: keyof T, toControl: keyof T): any;
}
interface FormArray<T = any> extends NgFormArray {
readonly valueChanges: Observable<T[]>;
readonly value: T[];
push(control: AbstractControl<T>): void;
insert(index: number, control: AbstractControl<T>): void;
setValue(value: T[], options?: Object): void;
patchValue(value: T[], options?: Object): void;
getRawValue(): T[];
at(index: number): AbstractControl<T>;
}
interface FormControlForValidation<T = any, TParent = any> extends NgFormControl {
readonly parent: FormGroup<TParent>;
readonly valueChanges: Observable<T>;
readonly value: T;
setValue(value: T, options?: Object): void;
get<K extends keyof T>(path: K): AbstractControl<T[K]>;
get<S>(path: (string | number)[]): AbstractControl<S>;
get(path: (string | number)[]): AbstractControl<any>;
}
export { AbstractControl as NgTypeAbstractControl };
export { FormControl as NgTypeFormControl };
export { FormControlForValidation as NgTypeFormControlValidator };
export { FormGroup as NgTypeFormGroup };
export { FormArray as NgTypeFormArray };