diff --git a/src/app/contact/contact.component.html b/src/app/contact/contact.component.html index e303ae5..3ddda67 100644 --- a/src/app/contact/contact.component.html +++ b/src/app/contact/contact.component.html @@ -16,27 +16,27 @@

Contact Form

-
+
- - Full name is required + + Full name is required
- - Must be a valid email format - Email is required + + Must be a valid email format + Email is required
- Message is required + Message is required
- diff --git a/src/app/contact/contact.component.ts b/src/app/contact/contact.component.ts index 89ba902..6d305b3 100644 --- a/src/app/contact/contact.component.ts +++ b/src/app/contact/contact.component.ts @@ -1,6 +1,7 @@ -import { Component, OnInit } from '@angular/core'; +import { Component } from '@angular/core'; import { CvService } from '../services/cv.service'; import { IContact } from './contact.model'; +import { FormBuilder, FormControl, NgForm } from '@angular/forms'; @Component({ selector: 'app-contact', @@ -8,21 +9,42 @@ import { IContact } from './contact.model'; styleUrl: './contact.component.scss' }) export class ContactComponent { - messageModel: IContact = {name: '', fromEmail: '', content: '' }; + messageModel: IContact = {name: '', email: '', content: '' }; candidateId: number = 1; messageSentError: boolean = false; messageSentSuccess: boolean = false; + submitted: boolean = false; - constructor(private svc: CvService){ + constructor(private svc: CvService, private formBuilder: FormBuilder){ } - sendMessage() :void{ - this.messageSentError = false; - this.messageSentSuccess = false; + sendMessage(messageForm: NgForm) :void{ + this.submitted = true; + if(messageForm.valid){ + this.messageSentError = false; + this.messageSentSuccess = false; this.svc.sendMessage(this.messageModel, this.candidateId).subscribe({ next: (response) => this.messageSentSuccess = response, error: () => this.messageSentError = true }); + } + else{ + this.validateAllFormFields(messageForm); + } + + } + + validateAllFormFields(formGroup: NgForm) { + Object.keys(formGroup.controls).forEach(field => { + const control = formGroup.controls[field]; + if (control instanceof FormControl) { + control.markAsTouched({ onlySelf: true }); + } else if (control instanceof NgForm) { + this.validateAllFormFields(control); + } + }); } } + + diff --git a/src/app/contact/contact.model.ts b/src/app/contact/contact.model.ts index d69e212..16c120b 100644 --- a/src/app/contact/contact.model.ts +++ b/src/app/contact/contact.model.ts @@ -1,5 +1,5 @@ export interface IContact{ name: string; - fromEmail: string; + email: string; content: string; } \ No newline at end of file