Адрес электронной почты не найден в Проверка базы данных в Angular 6 - PullRequest
0 голосов
/ 24 апреля 2019

Я делаю проверку электронной почты для обязательного поля и для неверного адреса электронной почты.Я хочу сделать проверку для «если электронная почта не найдена в базе данных» после нажатия кнопки «Отправить», то она должна показать какое-то сообщение об ошибке, например, я показываю требуемый и шаблон.Ниже приведен мой код. Я использую дизайн материала Angular 6.

             <form [formGroup]='loginForm' id="loginForm">       
             <mat-form-field>
              <mat-label>Email Address</mat-label>             
              <input matInput placeholder="" formControlName="emailid" required>
              <mat-error *ngIf="formControl.emailid.errors && (formControl.emailid.dirty || formControl.emailid.touched)">
                <p *ngIf="formControl.emailid.errors.required">Email is required</p>
                <p *ngIf="formControl.emailid.errors.pattern">Invalid email address</p>

              </mat-error>
              </mat-form-field>
              <button mat-button type="submit" (click)="login()">Login</button>
               </form>

Ниже идентификатора кода для файла ts.

               loginForm: FormGroup;
               emailId: any;
               status: any;

               ngOnInit(){
                this.loginForm = this.formBuilder.group({
                  emailid: ['', [Validators.required, Validators.pattern('^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$')]]
                });
               }

                get formControl() { return this.loginForm.controls; }

                 login() {
                    this.emailId = this.loginForm.controls['emailid'].value;
                        this.service.get({{ email: this.emailId}, 'url').subscribe((response) => {
                           this.result = response;
                              this.status = this.result.status;
                              if (this.status === 200) {
                                               //navigate to home page
                            } else If(this.status === 404) {
                                console.log("email not found");
                                // here i want to show this message like aboove i am showing for required and pattern field.
                            }
                     });

после отображения сообщения, после выполнения возврата в поле ввода электронной почтысообщение об ошибке должно исчезнуть. И как отобразить сообщение «email not found», если его нет в базе данных.Может кто-нибудь, пожалуйста, помогите мне, как этого добиться.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

пожалуйста, попробуйте это

this.loginForm.controls['email'].setErrors({'incorrect': true});
0 голосов
/ 24 апреля 2019

В вашем html добавьте обработчик событий в поле ввода, чтобы проверить, является ли он символом возврата, и resetForm, который устранит ошибки в форме.

В HTML:

<input matInput placeholder="" formControlName="emailid" (keypress)="ResetForm($event)" required>

После тега <mat-error>:

<p *ngIf="isEmailPresent">Email Address Not found</p>

В вашем файле ts инициализируйте isEmailPresent=false и в другой части, где вы получаете 404, this.isEmailPresent=true;

В файле ts: убедитесь, что вы импортируете ниже

import { Component, ViewChild } from '@angular/core';
import {
  FormGroup,
  FormBuilder,
  FormGroupDirective,
  Validators,
} from '@angular/forms';

Добавить форму директивы как viewchild:

 @ViewChild(FormGroupDirective) formGroupDirective: FormGroupDirective;

В вашей форме сброса ключей

ResetForm(event)
{
  if(event && event.keycode==8)//(keycode for backspace)
    {
       this.formGroupDirective.resetForm();
     }
}
...