Find more at libraries and examples at NgServe.io.
Read More At Angular Tutorial - Reusable Form Component with Multiple Controls and Validation
Run nx test ui-form-services
to execute the unit tests.
This library extends Angular's FormGroup allowing for a generic form group and validation utilizing @ngserveio/you-good validations.
An extension of Angular's FormGroup class that supplies the ability to check if the form has been marked as submitted.
Name | Type | Description |
---|---|---|
submitted$ |
BehaviorSubject<boolean> | Checks if the form has been marked as submitted |
Name | Return Type | Description |
---|---|---|
dispose() |
void |
Completes the submitted$ property's stream |
submit() |
void |
Marks the form as having been submitted and will mark all fields in form as touched. |
reset() |
void |
Resets the form, marks submitted as false |
getFormGroupSubmit(ctrl: AbstractControl) |
FormGroupSubmit | null
|
A static method that returns the FormGroupSubmit if the nested parent exists on the ctrl . |
A generic modeled form group that binds the keys of the models to an AbstractControl
. Its takes an additional parameter of type (item: T) => PropertyValidationErrors<T>
. See @ngserveio/you-good for validation types and examples for validations.
Name | Description | |
---|---|---|
getChangedValues |
Subset<T> |
Returns the changed values of the controls. Useful for PATCH requests. |
type FullName = { firstName: string; lastName: string };
const fullNameValidator = validate<FullName>({
firstName: propertyValidators(
(item) => item.firstName,
[required, emptyOrWhiteSpace]
),
lastName: propertyValidators(
(item) => item.lastName,
[required, emptyOrWhiteSpace]
),
});
const formGroup = new ModeledFormGroup<FullName>(
{
firstName,
lastName,
},
fullNameValidator
);
Subscribing to the modelChanged
property provides the defined generic type returned and validates the form in the stream.
formGroup.modelChanged.subscribe(({ firstName, lastName }) => {
console.log(`${firstName} ${lastName}`);
// Output: Steve Yzerman
});
formGroup.patchValue({
firstName: 'Steve',
lastName: 'Yzerman',
});