A FormControl that is backed by signal forms rules.
API
class SignalFormControl<T> extends AbstractControl { constructor(value: T, schemaOrOptions?: any, options?: any): SignalFormControl<T>; readonly fieldTree: FieldTree<T>; readonly sourceValue: WritableSignal<T>; readonly valueChanges: EventEmitter<T>; readonly statusChanges: EventEmitter<FormControlStatus>; setValue(value: any, options?: ValueUpdateOptions | undefined): void; patchValue(value: any, options?: ValueUpdateOptions | undefined): void; registerOnChange(fn: (value?: any, emitModelEvent?: boolean | undefined) => void): void; registerOnDisabledChange(fn: (isDisabled: boolean) => void): void; getRawValue(): T; reset(value?: any, options?: ValueUpdateOptions | undefined): void; readonly status: FormControlStatus; readonly valid: boolean; readonly invalid: boolean; readonly pending: boolean; readonly disabled: boolean; readonly enabled: boolean; get dirty(): boolean; get pristine(): boolean; get touched(): boolean; get untouched(): boolean; markAsTouched(opts?: { onlySelf?: boolean | undefined; } | undefined): void; markAsDirty(opts?: { onlySelf?: boolean | undefined; } | undefined): void; markAsPristine(opts?: { onlySelf?: boolean | undefined; } | undefined): void; markAsUntouched(opts?: { onlySelf?: boolean | undefined; } | undefined): void; updateValueAndValidity(_opts?: Object | undefined): void; disable(_opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; enable(_opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void; setValidators(_validators: any): void; setAsyncValidators(_validators: any): void; addValidators(_validators: any): void; addAsyncValidators(_validators: any): void; removeValidators(_validators: any): void; removeAsyncValidators(_validators: any): void; clearValidators(): void; clearAsyncValidators(): void; setErrors(_errors: any, _opts?: { emitEvent?: boolean | undefined; } | undefined): void; markAsPending(_opts?: { onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined): void;}
constructor
SignalFormControl<T>fieldTree
FieldTree<T>Source FieldTree.
sourceValue
WritableSignal<T>The raw signal driving the control value.
valueChanges
EventEmitter<T>statusChanges
EventEmitter<FormControlStatus>setValue
void@paramvalue
any@paramoptions
ValueUpdateOptions | undefined@returns
voidpatchValue
void@paramvalue
any@paramoptions
ValueUpdateOptions | undefined@returns
voidregisterOnChange
void@paramfn
(value?: any, emitModelEvent?: boolean | undefined) => void@returns
voidregisterOnDisabledChange
void@paramfn
(isDisabled: boolean) => void@returns
voidgetRawValue
T@returns
Treset
void@paramvalue
any@paramoptions
ValueUpdateOptions | undefined@returns
voidstatus
FormControlStatusvalid
booleaninvalid
booleanpending
booleandisabled
booleanenabled
booleandirty
booleandirty
booleanpristine
booleanpristine
booleantouched
booleantouched
booleanuntouched
booleanuntouched
booleanmarkAsTouched
void@paramopts
{ onlySelf?: boolean | undefined; } | undefined@returns
voidmarkAsDirty
void@paramopts
{ onlySelf?: boolean | undefined; } | undefined@returns
voidmarkAsPristine
void@paramopts
{ onlySelf?: boolean | undefined; } | undefined@returns
voidmarkAsUntouched
void@paramopts
{ onlySelf?: boolean | undefined; } | undefined@returns
voidupdateValueAndValidity
void@param_opts
Object | undefined@returns
voiddisable
void@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined@returns
voidenable
void@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined@returns
voidsetValidators
void@param_validators
any@returns
voidsetAsyncValidators
void@param_validators
any@returns
voidaddValidators
void@param_validators
any@returns
voidaddAsyncValidators
void@param_validators
any@returns
voidremoveValidators
void@param_validators
any@returns
voidremoveAsyncValidators
void@param_validators
any@returns
voidclearValidators
void@returns
voidclearAsyncValidators
void@returns
voidsetErrors
void@param_errors
any@param_opts
{ emitEvent?: boolean | undefined; } | undefined@returns
voidmarkAsPending
void@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined@returns
voidDescription
A FormControl that is backed by signal forms rules.
This class provides a bridge between Signal Forms and Reactive Forms, allowing
signal-based controls to be used within a standard FormGroup or FormArray.
A control could be created using signal forms, and integrated with an existing FormGroup propagating all the statuses and validity.
Usage Notes
Basic usage
const form = new FormGroup({ // You can create SignalFormControl with signal form rules, and add it to a FormGroup. name: new SignalFormControl('Alice', p => { required(p); }), age: new FormControl(25),});
In the template you can get the underlying fieldTree and bind it:
<form [formGroup]="form"> <input [formField]="nameControl.fieldTree" /> <input formControlName="age" /> </form>
Jump to details