Create Login page in Angular - Ionic Hybrid Application (login page in Ionic with validation )

 First you generate the login ts file 

copay paste these code 



import {Component} from '@angular/core';

import {IonicPage, NavController, NavParams} from 'ionic-angular';

import {FormBuilder, FormControl, FormGroup, Validators} from "@angular/forms";

import {AppValidators} from "../../Validators/AppValidators";

import {PageDashboard, PageForgotPassword, PageRegistration} from "../Page";

import { ShareServiceProvider } from '../../providers/share-service/share-service';

import 'rxjs/add/operator/map';

import 'rxjs/add/operator/catch';

import {AlertController} from 'ionic-angular';

/**

 * Generated class for the LoginPage page.

 *

 * See https://ionicframework.com/docs/components/#navigation for more info on

 * Ionic pages and navigation.

 */


@IonicPage()

@Component({

  selector: 'page-login',

  templateUrl: 'login.html',

})

export class LoginPage {

  [x: string]: any;

  myForm: any;

  isActiveToggleTextPassword: Boolean = true;

  private form: FormGroup;

 submitted: boolean= false;


  termsAndConditions = 'By Clicking Sign Up, you are agree to our <a href="www.facebook.com">Terms and Conditions and Privacy Policy</a>';




  constructor(public navCtrl: NavController,

              public navParams: NavParams,

              public formBuilder: FormBuilder,

              private auth: ShareServiceProvider,

              public alertCtrl: AlertController) {


    this.buildForm();

   // this.initializeForm();

  }



  public toggleTextPassword(): void {

    this.isActiveToggleTextPassword = (this.isActiveToggleTextPassword == true) ? false: true;

  }


  public isShowPassword(): boolean {

    return this.isActiveToggleTextPassword === true;

  }

  public getType() {

    return this.isActiveToggleTextPassword ? 'password' : 'text';

  }



  forgotPassword() {

    this.navCtrl.push(PageForgotPassword);

  }


  private buildForm() {


    this.form = this.formBuilder.group({

      password: ['', Validators.compose([Validators.minLength(6), AppValidators.isValidPassword, Validators.maxLength(30), Validators.required])],

      email: ['', Validators.compose([

                 Validators.required,

                Validators.pattern("^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$")

               ])]

    });


  }


  


login(){

  

  let env = this;

  if(this.form.value)

  {  

    this.auth.presentLoadingDefault();

    let body={

      Email:this.form.value.email,

      Password:this.form.value.password

    }

    this.auth.doLogin(body).then(res => {


        console.log(res);

        window.localStorage.users_data = JSON.stringify(res);

        this.navCtrl.setRoot(PageDashboard);

        this.submitted = true;

       

      },

      error => {

        if (error == "Login Email or Password are incorrect") {

         // env.presentAlert(error);

        } else if (error == "Unable to login to your account") {

         // env.presentAlert(error);

        }

        else {

        //  env.presentAlert("Something went wrong");

        }


        // Set Error In Error Log Table

        let date = new Date().toISOString().slice(0, 19).replace('T', ' ');

        let req = { 'err_text': JSON.stringify(error) + "Line No 160", 'file_path': 'login.ts', 'method': 'login', 'parent_method': "0", 'error_time': date, 'type': 'mobile' }

        this.auth.errorLog(req).subscribe(); //call error log api

      }

      );


  }else{

    this.submitted = false;

       return false;

  }

}

  

// Alert any Error occured

presentAlert(error: any) {

  let alert = this.alert.create({

    subTitle: error,

    buttons: ["Ok"]

  });

  alert.present();

}

  registrationOnClick() {

    this.navCtrl.push(PageRegistration);

  }

}

After that html code 


<ion-content>


  <ion-grid padding>


    <ion-row class="row-img" margin-top><img class="top-icon" src="assets/icon/dlogo.png"></ion-row>
    <ion-row class="row-title" margin-bottom><h2 class="top-title">{{'Sign in with Discount On Pay' | translate}}</h2>
    </ion-row>


    <ion-row class="row-form">


      <form [formGroup]="form" novalidate class="form-login">

        <div class="div-input">

          <ion-row class="row-mobile" no-padding>
            <ion-col no-padding col-2 text-center align-self-center class="country_code">
              <ion-icon name="ios-mail-outline" class="icon-email" color="secondary"></ion-icon>
            </ion-col>

            <ion-col no-padding col-10 class="col-mobile">
              <ion-item no-lines no-padding>
                <ion-input formControlName="email"
                           name="email"
                           type="email" spellcheck="false"
                           autocapitalize="off"
                           maxlength="40"
                           placeholder="Enter email"
                           clearInput clearOnEdit="false">

                </ion-input>
              </ion-item>

            </ion-col>
          </ion-row>


        </div>


        <div class="div-input">
          <ion-row class="row-mobile" no-padding>
            <ion-col no-padding col-2 text-center align-self-center class="country_code">
              <ion-icon name="ios-lock-outline" class="icon-email" color="secondary"></ion-icon>
            </ion-col>

            <ion-col no-padding col-8 class="col-mobile">
              <ion-item no-padding no-lines>
                <ion-input #password formControlName="password"
                           name="password" clearInput
                           clearOnEdit="false"
                           spellcheck="false"
                           [type]="getType()"
                           autocapitalize="off"
                           maxlength="30"
                           placeholder="Enter  password"
                           [class.invalid]="!form.controls.password.valid && (submitted)">
                </ion-input>

              </ion-item>
            </ion-col>
            <ion-col no-padding col-2 text-center align-self-center class="row-mobile" (click)="toggleTextPassword()">
              <ion-icon *ngIf="isShowPassword()" name="ios-eye-outline" class="icon-email" color="secondary"></ion-icon>
              <ion-icon *ngIf="!isShowPassword()" name="ios-eye-off-outline" class="icon-email"
                        color="secondary"></ion-icon>
            </ion-col>
          </ion-row>

        </div>

     

        <ion-row>
          <ion-col text-center align-self-end>
            <div>
              <button ion-button color="white" clear text-uppercase (click)="forgotPassword()">{{ 'Forgot Password?' |
                translate}}
              </button>
            </div>
          </ion-col>
        </ion-row>


        <div padding-right padding-left class="btn-login">
          <button (click)="login()" ion-button block round icon-right type="submit" color="secondary" >
            {{'Login' | translate}}
          </button>
        </div>

        <div padding-right padding-left class="btn-login" margin-top>
          <button ion-button block round icon-right type="submit" (click)="registrationOnClick()" color="secondary">
            {{'Register' | translate}}
          </button>
        </div>


      </form>


    </ion-row>

    <ion-row>
      <ion-col class="dash"></ion-col>
      <ion-col text-center>
        <ion-label color="white" no-margin margin-top>Or sign in with</ion-label>
      </ion-col>
      <ion-col class="dash"></ion-col>
    </ion-row>

    <ion-row class="row-social">
      <ion-col>
        <img class="img-social" src="assets/icon/facebook.svg">
      </ion-col>
      <ion-col>
        <img class="img-social" src="assets/icon/google_plus.svg">
      </ion-col>

    </ion-row>

    <ion-row padding>
      <span class="terms-and-condition" [innerHtml]=termsAndConditions> </span>
    </ion-row>


  </ion-grid>


</ion-content>

Create Login page in Angular - Ionic Hybrid Application (login page in Ionic with validation ) Create Login page in Angular - Ionic Hybrid Application (login page in Ionic with validation ) Reviewed by Bugs Solutions on December 19, 2022 Rating: 5

No comments