import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { APIService } from '../services/api.service'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MatSnackBar } from '@angular/material/snack-bar'; import { HttpErrorResponse } from '@angular/common/http'; @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.scss'] }) export class LoginComponent implements OnInit { loginFormGroup: FormGroup = this.fb.group({ emailaddress: ['', [Validators.required, Validators.email]], password: ['', Validators.required], }) isLoading:boolean = false constructor(private router: Router, private apiService: APIService, private fb: FormBuilder, private snackBar: MatSnackBar) { } ngOnInit(): void { } async LoginUser(){ if(this.loginFormGroup.valid) { this.isLoading = true await this.apiService.LoginUser(this.loginFormGroup.value).subscribe(result => { localStorage.setItem('User', JSON.stringify(result)) this.loginFormGroup.reset(); this.router.navigateByUrl('productListing'); }) } } } <div class="login-wrapper" fxLayout="row" fxLayoutAlign="center center"> <mat-card class="box" *ngIf="!isLoading"> <mat-card-header> <mat-card-title>Log in</mat-card-title> </mat-card-header> <form class="form" [formGroup]="loginFormGroup"> <mat-card-content> <mat-form-field class="full-width"> <mat-label>Username</mat-label> <input matInput placeholder="Enter the User's Email address" formControlName="emailaddress"> </mat-form-field> <mat-form-field class="full-width"> <mat-label>Password</mat-label> <input matInput type="password" placeholder="Enter the User's Password" formControlName="password"> </mat-form-field> </mat-card-content> <button mat-stroked-button color="primary" class="btn-block" (click)="LoginUser()">Log in</button> <div>Don't have an account? Register <a [routerLink]="['../register']">here</a></div> </form> </mat-card> <mat-progress-spinner mode="indeterminate" value="50" *ngIf="isLoading"> </mat-progress-spinner> </div>
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter