register.component.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { Component, OnInit } from '@angular/core';
  2. import { AuthService } from '../auth/auth.service';
  3. import { SignupInfo } from '../auth/signup-info';
  4. import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms";
  5. import Validation from "../validation";
  6. import { MatSnackBar } from "@angular/material/snack-bar";
  7. import { Router } from "@angular/router";
  8. @Component({
  9. selector: 'app-register',
  10. templateUrl: './register.component.html',
  11. styleUrls: ['./register.component.css']
  12. })
  13. export class RegisterComponent implements OnInit {
  14. form: FormGroup = new FormGroup({
  15. email: new FormControl(''),
  16. password: new FormControl(''),
  17. confirmPassword: new FormControl(''),
  18. });
  19. signupInfo?: SignupInfo;
  20. isSignedUp = false;
  21. isSignUpFailed = false;
  22. constructor(private authService: AuthService,
  23. private formBuilder: FormBuilder,
  24. private _snackBar: MatSnackBar,
  25. private router: Router) {
  26. }
  27. ngOnInit(): void {
  28. this.form = this.formBuilder.group({
  29. email: ['', [Validators.required, Validators.email]],
  30. password: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(40)]],
  31. confirmPassword: ['', Validators.required]
  32. }, {
  33. validators: [Validation.match('password', 'confirmPassword')]
  34. })
  35. }
  36. get f(): { [key: string]: AbstractControl } {
  37. return this.form.controls;
  38. }
  39. onSubmit() {
  40. if (this.form.invalid) {
  41. return;
  42. }
  43. this.signupInfo = new SignupInfo(this.form.value.email, this.form.value.password);
  44. this.authService.signUp(this.signupInfo).subscribe(
  45. () => {
  46. this.isSignedUp = true;
  47. this.isSignUpFailed = false;
  48. this.router.navigate(['/auth/login']).then();
  49. },
  50. error => {
  51. this._snackBar.open(error.error?.message || 'Oops! Error occurred', 'Dismiss');
  52. this.isSignUpFailed = true;
  53. }
  54. );
  55. }
  56. }