@ngneat/reactive-forms
Version:
(Angular Reactive) Forms with Benefits
22 lines (21 loc) • 1.84 kB
TypeScript
import { AbstractControl, AbstractControlOptions, AsyncValidatorFn, UntypedFormBuilder, ValidatorFn } from '@angular/forms';
import { FormControl, FormGroup } from "..";
import { FormArray } from "./form-array";
import { BoxedValue, ControlsOf } from "./types";
import * as i0 from "@angular/core";
export declare class FormBuilder extends UntypedFormBuilder {
control<T>(formState?: BoxedValue<T>, validatorOrOpts?: ConstructorParameters<typeof FormControl>[1], asyncValidator?: ConstructorParameters<typeof FormControl>[2]): FormControl<T>;
array<T, Control extends AbstractControl = T extends Record<any, any> ? FormGroup<ControlsOf<T>> : FormControl<T>>(controlsConfig: Control[], validatorOrOpts?: ConstructorParameters<typeof FormArray>[1], asyncValidator?: ConstructorParameters<typeof FormArray>[2]): FormArray<T, Control>;
group<T extends Record<string, any>>(controlsConfig: Controls<T>, options?: AbstractControlOptions): FormGroup<GroupResolverFormBuilder<T>>;
static ɵfac: i0.ɵɵFactoryDeclaration<FormBuilder, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<FormBuilder>;
}
export declare type GroupResolverFormBuilder<T extends Record<string, any>> = {
[K in keyof T]: T[K] extends AbstractControl ? T[K] : T[K] extends (infer U)[] ? FormControl<ResolveTypeArray<U>> : FormControl<T[K]>;
};
declare type FormControlBuilderOptions<T> = [T, (ValidatorFn | ValidatorFn[] | null)?, (AsyncValidatorFn | AsyncValidatorFn[] | null)?];
declare type ResolveTypeArray<U> = Exclude<U, null | ValidatorFn | ValidatorFn[] | AsyncValidatorFn | AsyncValidatorFn[]>;
declare type Controls<T> = {
[K in keyof T]: T[K] extends AbstractControl ? T[K] : T[K] extends (infer U)[] ? FormControlBuilderOptions<ResolveTypeArray<U>> : T[K] extends Record<any, any> ? FormGroup<Controls<T[K]>> : T[K];
};
export {};