javascript - validate - ng model password




각도:유효하지 않은 경우 유효하지 않은 Validators.email (4)

폼 ( FormGroup )을 포함하는 Angular (4.0) 앱을 만들고 있습니다. 이 양식에는 전자 메일 입력란 ( FormControl )이 있으며 유효성 검사를 위해 Validators.email 을 사용합니다.

import { Validators } from '@angular/forms';

// ...
let validators = [];
if ([condition]) {
    validators.push(Validators.email);
}
let fc = new FormControl([value] || '', validators);
// ...

그러나 입력이 비어있는 경우 입력이 필요하지 않은 경우에도 입력이 유효하지 않습니다 (클래스 ng-invalid 경우).

이것은 올바른 행동입니까? 내가 무엇을 할 수 있을지?


가장 간단한 형식은 다음과 같습니다.

<input [(ngModel)]="model.email" [email]="!!model.email">

내가 찾은 최고의 해결책은 이것이었다 :

<input type="email" name="email" [(ngModel)]="model.Email" [email]="model.Email!='' && model.Email!=null">

템플릿 중심 양식의 해결 방법 :

<input [(ngModel)]="model.email"  [email]="model.email!==''">

이것은 나를 위해 일했다 (빈 문자열로 모델 값을 초기화하는 것을 보장한다).


그러나 eric2783 의 솔루션은 꽤 좋지만 Validators.email 의 출력이 변경 될 경우이 사용자 정의 유효성 검사기는 각도의 유효성 검사기 출력과 호환되지 않습니다.

호환성을 유지하기 위해해야 ​​할 일은 다음과 같습니다.

private customEmailValidator(control: AbstractControl): ValidationErrors {
  if (!control.value) {
    return null;
  }

  return Validators.email(control);
}




validation