Hello to all, welcome to therichpost.com. In this post, I will tell you, Angular 15 Doctor Appointment Booking Form Template with Validations Working Demo.
Guys with this we will cover below things:
- Angular 15 Reactive Form Implelemtnation.
- Reactive forms validation email with valid format.
- Reactive form checkbox validation.
- Angular15 Reactive Form Responsiveness with Bootstrap 5.
Angular15 came and if you are new then you must check below link:
Here is the code snippet and please use carefully:
1. Very first guys, here are common basics steps to add angular 15 application on your machine and also we must have latest nodejs version(14.17.0) installed for angular 15:
npm install -g @angular/cli ng new angularform // Set Angular 15 Application on your pc cd angularform // Go inside project folder
2. Now run below commands to set bootstrap 5 modules into our angular 15 application for responsiveness (optional):
npm install bootstrap npm i @popperjs/core
3. Now friends we just need to add below code into angularform/angular.json file (optional):
"styles": [ ... "node_modules/bootstrap/dist/css/bootstrap.min.css" ], "scripts": [ ... "node_modules/bootstrap/dist/js/bootstrap.min.js" ]
4. Now guys we will add below code into our angularform/src/app/app.module.ts file:
... import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ ... imports: [ ... ReactiveFormsModule, ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
5. Now guys we will add below code into our angularform/src/app/app.component.ts file:
import { Component } from '@angular/core'; import { FormControl,FormGroup,Validators,FormBuilder } from '@angular/forms'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { //Form variables registerForm:any = FormGroup; submitted = false; constructor( private formBuilder: FormBuilder){} //Add user form actions get f() { return this.registerForm.controls; } onSubmit() { this.submitted = true; // stop here if form is invalid if (this.registerForm.invalid) { return; } //True if all the fields are filled if(this.submitted) { alert("Great!!"); } } ngOnInit() { //Add form validations this.registerForm = this.formBuilder.group({ fname: ['', [Validators.required]], lname: ['', [Validators.required]], email: ['', [Validators.required]], phone: ['', [Validators.required]], date: ['', [Validators.required]], message: ['', [Validators.required]], }); } }
6. Finally we will add below code into our angularform/src/app/app.component.html file:
<div class="banner3"> <div class="py-5 banner" style="background-image:url(https://therichpost.com/wp-content/uploads/2023/01/banner-bg-book.jpg);"> <div class="container"> <form [formGroup]="registerForm" (ngSubmit)="onSubmit()"> <div class="row"> <div class="col-md-7 col-lg-5"> <h3 class="my-3 text-white font-weight-medium text-uppercase">Book Appointment</h3> <div class="bg-white"> <div class="form-row border-bottom"> <div class="p-4 left border-right w-50"> <label class="text-inverse font-12 text-uppercase">First Name<span class="text-danger">*</span></label> <input type="text" class="border-0 p-0 font-14 form-control" placeholder="Your First Name" formControlName="fname" [ngClass]="{ 'is-invalid': submitted && f.fname.errors }" /> <div *ngIf="submitted && f.fname.errors" class="invalid-feedback mb"> <div *ngIf="f.fname.errors.required">First name is required.</div> </div> </div> <div class="p-4 right w-50"> <label class="text-inverse font-12 text-uppercase">Last Name<span class="text-danger">*</span></label> <input type="text" class="border-0 p-0 font-14 form-control" placeholder="Your Last Name" formControlName="lname" [ngClass]="{ 'is-invalid': submitted && f.fname.errors }" /> <div *ngIf="submitted && f.lname.errors" class="invalid-feedback mb"> <div *ngIf="f.lname.errors.required">Last name is required.</div> </div> </div> </div> <div class="form-row border-bottom p-4"> <label class="text-inverse font-12 text-uppercase">Email Address<span class="text-danger">*</span></label> <input type="text" class="border-0 p-0 font-14 form-control" placeholder="Enter your Email Address" formControlName="email" [ngClass]="{ 'is-invalid': submitted && f.email.errors }" /> <div *ngIf="submitted && f.email.errors" class="invalid-feedback mb"> <div *ngIf="f.email.errors.required">Email is required.</div> </div> </div> <div class="form-row border-bottom p-4"> <label class="text-inverse font-12 text-uppercase">Phone Number<span class="text-danger">*</span></label> <input type="text" class="border-0 p-0 font-14 form-control" placeholder="Enter your Phone Number" formControlName="phone" [ngClass]="{ 'is-invalid': submitted && f.phone.errors }" /> <div *ngIf="submitted && f.phone.errors" class="invalid-feedback mb"> <div *ngIf="f.phone.errors.required">Phone is required.</div> </div> </div> <div class="form-row border-bottom p-4 position-relative"> <label class="text-inverse font-12 text-uppercase">Booking Date<span class="text-danger">*</span></label> <div class="input-group date"> <input type="date" class="border-0 p-0 font-14 form-control" id="dp" placeholder="Select the Appointment Date" formControlName="date" [ngClass]="{ 'is-invalid': submitted && f.date.errors }" /> <div *ngIf="submitted && f.date.errors" class="invalid-feedback mb"> <div *ngIf="f.date.errors.required">Date is required.</div> </div> </div> </div> <div class="form-row border-bottom p-4"> <label class="text-inverse font-12 text-uppercase">Message<span class="text-danger">*</span></label> <textarea col="1" row="1" class="border-0 p-0 font-weight-light font-14 form-control" placeholder="Write Down the Message" formControlName="message" [ngClass]="{ 'is-invalid': submitted && f.message.errors }"></textarea> <div *ngIf="submitted && f.message.errors" class="invalid-feedback mb"> <div *ngIf="f.message.errors.required">Message is required.</div> </div> </div> <div> <button type="submit" class="w-100 m-0 border-0 py-4 font-14 font-weight-medium btn btn-danger-gradiant btn-block position-relative rounded-0 text-center text-white text-uppercase"> <span>Book Your Appointment Now</span> </button> </div> </div> </div> </div> </form> </div> </div> </div>
7. Now we will add below custom style into our angularform/src/app/app.component.css file:
@import url(//fonts.googleapis.com/css?family=Montserrat:400,500,700); .banner3 { font-family: "Montserrat", sans-serif; color: #8d97ad; font-weight: 300; max-height: 800px; } .banner3 .banner { position: relative; max-height: 700px; background-size: cover; background-repeat: no-repeat; background-position: center top; width: 100%; display: table; } .banner3 h1, .banner3 h2, .banner3 h3, .banner3 h4, .banner3 h5, .banner3 h6 { color: #3e4555; } .banner3 .font-weight-medium { font-weight: 500; } .banner3 .subtitle { color: #8d97ad; line-height: 24px; } .banner3 .btn-danger-gradiant { background: #ff4d7e; background: -webkit-linear-gradient(legacy-direction(to right), #ff4d7e 0%, #ff6a5b 100%); background: -webkit-gradient(linear, left top, right top, from(#ff4d7e), to(#ff6a5b)); background: -webkit-linear-gradient(left, #ff4d7e 0%, #ff6a5b 100%); background: -o-linear-gradient(left, #ff4d7e 0%, #ff6a5b 100%); background: linear-gradient(to right, #ff4d7e 0%, #ff6a5b 100%); border: 0px; } .banner3 .btn-danger-gradiant:hover { background: #ff6a5b; background: -webkit-linear-gradient(legacy-direction(to right), #ff6a5b 0%, #ff4d7e 100%); background: -webkit-gradient(linear, left top, right top, from(#ff6a5b), to(#ff4d7e)); background: -webkit-linear-gradient(left, #ff6a5b 0%, #ff4d7e 100%); background: -o-linear-gradient(left, #ff6a5b 0%, #ff4d7e 100%); background: linear-gradient(to right, #ff6a5b 0%, #ff4d7e 100%); } .banner3 .btn-danger-gradiant.active, .banner3 .btn-danger-gradiant:active, .banner3 .btn-danger-gradiant:focus { -webkit-box-shadow: 0px; box-shadow: 0px; opacity: 1; } .banner3 .btn-md { padding: 15px 45px; font-size: 16px; } .banner3 .form-row { margin: 0; } .banner3 label.font-12 { font-size: 12px; font-weight: 500; margin-bottom: 5px; } .banner3 .form-control { color: #8d97ad; -o-text-overflow: ellipsis; text-overflow: ellipsis; } .banner3 .date label { cursor: pointer; margin: 0; } @media (max-width: 370px) { .banner3 .left, .banner3 .right { padding: 25px; } } @media (max-width: 320px) { .banner3 .left, .banner3 .right { padding: 25px 15px; } } .banner3 .font-14 { font-size: 14px; } .banner3 .text-inverse { color: #3e4555 !important; } .form-row { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -5px; margin-left: -5px; } .border-bottom { border-bottom: 1px solid #dee2e6!important; } .border-right { border-right: 1px solid #dee2e6!important; }
Now we are done friends and please run ng serve command to check the output in browser(locahost:4200) and if you have any kind of query then please do comment below.
Note: Friends, I just tell the basic setup and things, you can change the code according to your requirements. For better understanding please watch video above.
Guys I will appreciate that if you will tell your views for this post. Nothing matters if your views will be good or bad.
Jassa
Thanks
Recent Comments