Commit 640adfce authored by gap95's avatar gap95
Browse files

Added form validation in Registraion page

parent d38661cb
...@@ -16,6 +16,7 @@ import { AppComponent } from './app.component'; ...@@ -16,6 +16,7 @@ import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { RestService } from './rest.service'; import { RestService } from './rest.service';
import { ToastService } from './services/toast.service'; import { ToastService } from './services/toast.service';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
...@@ -25,6 +26,8 @@ import { ToastService } from './services/toast.service'; ...@@ -25,6 +26,8 @@ import { ToastService } from './services/toast.service';
HttpClientModule, HttpClientModule,
IonicModule.forRoot(), IonicModule.forRoot(),
AppRoutingModule, AppRoutingModule,
FormsModule,
ReactiveFormsModule,
IonicStorageModule.forRoot() IonicStorageModule.forRoot()
], ],
providers: [ providers: [
......
...@@ -11,7 +11,10 @@ ...@@ -11,7 +11,10 @@
<div padding> <div padding>
<img src="../../../assets/images/bike2gologo.png"> <img src="../../../assets/images/bike2gologo.png">
</div> </div>
<div class="ion-text">
<h3>Login</h3>
</div>
<div padding> <div padding>
<ion-item> <ion-item>
<ion-input type="text" [(ngModel)]="username" placeholder="Username"></ion-input> <ion-input type="text" [(ngModel)]="username" placeholder="Username"></ion-input>
......
...@@ -6,4 +6,7 @@ ion-item { ...@@ -6,4 +6,7 @@ ion-item {
#correctCredentialsmsg{ #correctCredentialsmsg{
color:red; color:red;
font-size: 14px; font-size: 14px;
} }
\ No newline at end of file .ion-text{
text-align: center;
}
\ No newline at end of file
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
...@@ -8,11 +7,14 @@ import { RegisterPageRoutingModule } from './register-routing.module'; ...@@ -8,11 +7,14 @@ import { RegisterPageRoutingModule } from './register-routing.module';
import { RegisterPage } from './register.page'; import { RegisterPage } from './register.page';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
@NgModule({ @NgModule({
imports: [ imports: [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
ReactiveFormsModule,
RegisterPageRoutingModule RegisterPageRoutingModule
], ],
declarations: [RegisterPage] declarations: [RegisterPage]
......
...@@ -5,38 +5,68 @@ ...@@ -5,38 +5,68 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<ion-grid>
<ion-row justify-content-center> <form [formGroup]="angForm" novalidate>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12"> <ion-grid>
<div padding> <ion-row justify-content-center>
<img src="../../../assets/images/bike2gologo.png"> <ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
</div> <div padding>
<img src="../../../assets/images/bike2gologo.png">
</div>
<div class="ion-text">
<h3>Registration</h3>
</div>
<ion-item ><ion-input type="text" formControlName="firstName" placeholder="Enter First Name"></ion-input></ion-item>
<div
*ngIf="angForm.controls['firstName'].invalid && (angForm.controls['firstName'].dirty || angForm.controls['firstName'].touched)"
class="alert-danger">
<div *ngIf="angForm.controls['firstName'].errors.required">
First Name is required.
</div>
</div>
<ion-item >
<ion-input type="text" formControlName="lastName" placeholder="Enter Last Name"></ion-input>
</ion-item>
<div
*ngIf="angForm.controls['lastName'].invalid && (angForm.controls['lastName'].dirty || angForm.controls['lastName'].touched)"
class="alert-danger">
<div *ngIf="angForm.controls['lastName'].errors.required">
Last Name is required.
</div>
</div>
<ion-item ><ion-input type="text" formControlName="email" placeholder="Enter Email"></ion-input></ion-item>
<div
*ngIf="angForm.controls['email'].invalid && (angForm.controls['email'].dirty || angForm.controls['email'].touched)"
class="alert-danger">
<div *ngIf="angForm.controls['email'].errors.required">
Email is required.
</div>
</div>
<div padding> <ion-item ><ion-input type="password" formControlName="password" placeholder="Password"></ion-input></ion-item>
<ion-item>
<ion-input type="text" [(ngModel)]="firstName" placeholder="Enter First Name"></ion-input> <div
</ion-item> *ngIf="angForm.controls['password'].invalid && (angForm.controls['password'].dirty || angForm.controls['password'].touched)"
<ion-item> class="alert-danger">
<ion-input type="text" [(ngModel)]="lastName" placeholder="Enter Last Name"></ion-input> <div *ngIf="angForm.controls['password'].errors.required">
</ion-item> Password is required.
<ion-item> </div>
<ion-input type="text" [(ngModel)]="email" placeholder="Email"></ion-input> </div>
</ion-item>
<div id="correctCredentialsmsg" padding *ngIf="correctCredentials">
Wrong Credentials !
</div>
<div padding>
<ion-item> <ion-button [disabled]="angForm.pristine || angForm.invalid" size="large" expand="block" (click)="submitRegister()">Register</ion-button>
<ion-input type="password" [(ngModel)]="password" placeholder="Password"></ion-input> </div>
</ion-item> </ion-col>
</div> </ion-row>
</ion-grid>
<div id="correctCredentialsmsg" padding *ngIf="correctCredentials"> </form>
Wrong Credentials !
</div>
<div padding>
<ion-button size="large" expand="block" (click)="submitRegister()">Register</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-content> </ion-content>
\ No newline at end of file
.alert-danger{
color: red;
}
ion-item {
border: solid 1px lightgray;
border-radius: 10px;
margin-bottom: 10px;
}
.ion-text{
text-align: center;
}
...@@ -2,7 +2,9 @@ import { Component, OnInit } from '@angular/core'; ...@@ -2,7 +2,9 @@ import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { RestService } from 'src/app/rest.service'; import { RestService } from 'src/app/rest.service';
import { ToastService } from '../../services/toast.service';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
@Component({ @Component({
selector: 'app-register', selector: 'app-register',
...@@ -10,7 +12,7 @@ import { Router } from '@angular/router'; ...@@ -10,7 +12,7 @@ import { Router } from '@angular/router';
styleUrls: ['./register.page.scss'], styleUrls: ['./register.page.scss'],
}) })
export class RegisterPage implements OnInit { export class RegisterPage implements OnInit {
public angForm: FormGroup;
registerApi: Observable<any>; registerApi: Observable<any>;
correctCredentials: boolean; correctCredentials: boolean;
...@@ -18,11 +20,35 @@ export class RegisterPage implements OnInit { ...@@ -18,11 +20,35 @@ export class RegisterPage implements OnInit {
password: ""; password: "";
lastName: ""; lastName: "";
firstName: ""; firstName: "";
constructor(private router: Router, public httpClient: HttpClient, public restService: RestService) { }
constructor(private router: Router,
public httpClient: HttpClient,
public restService: RestService,
private toastService: ToastService,
private fb: FormBuilder) {
this.createForm();
}
ngOnInit() { ngOnInit() {
}
createForm() {
this.angForm = this.fb.group({
firstName: ['',[ Validators.required ]],
lastName: ['', [Validators.required ]],
email: ['',[ Validators.required, Validators.email]],
password: ['', [Validators.required,Validators.minLength(4) ]],
});
} }
submitRegister() { submitRegister() {
if (this.angForm.invalid) {
return;
}
this.registerApi = this.httpClient.post('http://193.196.52.237:8081/register', { this.registerApi = this.httpClient.post('http://193.196.52.237:8081/register', {
"email": this.email, "email": this.email,
"password": this.password, "password": this.password,
...@@ -33,10 +59,13 @@ export class RegisterPage implements OnInit { ...@@ -33,10 +59,13 @@ export class RegisterPage implements OnInit {
.subscribe((data) => { .subscribe((data) => {
console.log('my data: ', data); console.log('my data: ', data);
this.restService.setToken(data.token); this.restService.setToken(data.token);
this.toastService.showToast("Registration Successful!")
this.router.navigateByUrl('/login'); this.router.navigateByUrl('/login');
}, (error) => { }, (error) => {
console.log(error); console.log(error);
this.correctCredentials = true; this.toastService.showToast("Registration failed!")
}); });
} }
} }
<ion-header>
<ion-toolbar>
<ion-title>feedback</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-grid>
<ion-row justify-content-center>
<ion-col align-self-center size-md="6" size-lg="5" size-xs="12">
<div padding>
<img src="../../../assets/images/bike2gologo.png">
</div>
<div padding>
<ion-item>
<ion-input type="text" [(ngModel)]="firstName" placeholder="Enter First Name"></ion-input>
</ion-item>
<ion-item>
<ion-input type="text" [(ngModel)]="bikeId" placeholder="Bike id"></ion-input>
</ion-item>
<ion-item>
<ion-input type="text" [(ngModel)]="message" placeholder="Enter your Feedback here!"></ion-input>
</ion-item>
<ion-item>
<ion-input type="password" [(ngModel)]="password" placeholder="Password"></ion-input>
</ion-item>
</div>
<div id="correctCredentialsmsg" padding *ngIf="correctCredentials">
Wrong Credentials !
</div>
<div padding>
<ion-button size="large" expand="block" (click)="submitRegister()">Register</ion-button>
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment