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
void
patchValue
void
@paramvalue
any
@paramoptions
ValueUpdateOptions | undefined
@returns
void
registerOnChange
void
@paramfn
(value?: any, emitModelEvent?: boolean | undefined) => void
@returns
void
registerOnDisabledChange
void
@paramfn
(isDisabled: boolean) => void
@returns
void
getRawValue
T
@returns
T
reset
void
@paramvalue
any
@paramoptions
ValueUpdateOptions | undefined
@returns
void
status
FormControlStatusvalid
booleaninvalid
booleanpending
booleandisabled
booleanenabled
booleandirty
booleandirty
booleanpristine
booleanpristine
booleantouched
booleantouched
booleanuntouched
booleanuntouched
booleanmarkAsTouched
void
@paramopts
{ onlySelf?: boolean | undefined; } | undefined
@returns
void
markAsDirty
void
@paramopts
{ onlySelf?: boolean | undefined; } | undefined
@returns
void
markAsPristine
void
@paramopts
{ onlySelf?: boolean | undefined; } | undefined
@returns
void
markAsUntouched
void
@paramopts
{ onlySelf?: boolean | undefined; } | undefined
@returns
void
updateValueAndValidity
void
@param_opts
Object | undefined
@returns
void
disable
void
@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined
@returns
void
enable
void
@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined
@returns
void
setValidators
void
@param_validators
any
@returns
void
setAsyncValidators
void
@param_validators
any
@returns
void
addValidators
void
@param_validators
any
@returns
void
addAsyncValidators
void
@param_validators
any
@returns
void
removeValidators
void
@param_validators
any
@returns
void
removeAsyncValidators
void
@param_validators
any
@returns
void
clearValidators
void
@returns
void
clearAsyncValidators
void
@returns
void
setErrors
void
@param_errors
any
@param_opts
{ emitEvent?: boolean | undefined; } | undefined
@returns
void
markAsPending
void
@param_opts
{ onlySelf?: boolean | undefined; emitEvent?: boolean | undefined; } | undefined
@returns
void
Description
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>