Creating Elegant Reactive Forms
Learn how to reactively validate form controls and create a custom validator in Angular.
We'll cover the following...
We will learn how to create Angular forms using an Angular service. The Angular forms library exposes a service called FormBuilder that we can use to simplify form creation. We will learn how to use it by converting the form we created in the product create component:
Open the
product-create.component.tsfile and import theFormBuilderartifact from the@angular/formsnpm package:
import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
Inject
FormBuilderin theconstructorof theProductCreateComponentclass:
constructor(private productsService: ProductsService, private builder: FormBuilder) {}
Convert the
productFormproperty as follows:
productForm: FormGroup<{name: FormControl<string>,price: FormControl<number | undefined>}> | undefined;
Create the following
buildFormmethod:
private buildForm() {this.productForm = this.builder.nonNullable.group({name: this.builder.nonNullable.control(''),price: this.builder.nonNullable.control<number | undefined>(undefined, {})});}
We use the group method of the FormBuilder service to group form controls together. We also use its control method to create the form controls. Notice that we also use the nonNullable property to indicate that the form and its controls are not nullable.
Make sure to use the non-null assertion operator in all references of the
productFormproperty because it doesn’t have an ...