|
- import { Component, OnInit } from '@angular/core';
- import { Router, ActivatedRoute } from '@angular/router';
- import { FormBuilder, FormGroup, Validators } from '@angular/forms';
- import { first } from 'rxjs/operators';
-
- import { AccountService, AlertService } from '@app/_services';
-
- @Component({ templateUrl: 'register.component.html' })
- export class RegisterComponent implements OnInit {
- form!: FormGroup;
- loading = false;
- submitted = false;
-
- constructor(
- private formBuilder: FormBuilder,
- private route: ActivatedRoute,
- private router: Router,
- private accountService: AccountService,
- private alertService: AlertService
- ) { }
-
- ngOnInit() {
- this.form = this.formBuilder.group({
- firstName: ['', Validators.required],
- lastName: ['', Validators.required],
- username: ['', Validators.required],
- password: ['', [Validators.required, Validators.minLength(6)]]
- });
- }
-
- // convenience getter for easy access to form fields
- get f() { return this.form.controls; }
-
- onSubmit() {
- this.submitted = true;
-
- // reset alerts on submit
- this.alertService.clear();
-
- // stop here if form is invalid
- if (this.form.invalid) {
- return;
- }
-
- this.loading = true;
- this.accountService.register(this.form.value)
- .pipe(first())
- .subscribe({
- next: () => {
- this.alertService.success('Registration successful', { keepAfterRouteChange: true });
- this.router.navigate(['../login'], { relativeTo: this.route });
- },
- error: error => {
- this.alertService.error(error);
- this.loading = false;
- }
- });
- }
- }
|