1
カスタムバリデーターがフィールド値より1ステップ遅れている理由はわかりません。例:私の入力フィールドは値123を1つずつ入力しています。しかし、私のバリデータは値が12です。角型(4):Template-Drivenフォームのカスタムバリデーターは、後ろのフィールドの現在の値を表示します
2つのフィールド間の値を正しく比較することはできません。 このディレクティブでバリデータです:
@Directive({
selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: forwardRef(() => PasswordValidationDirective),
multi: true
}
]
})
export class PasswordValidationDirective implements Validator {
@Input('first') first: string;
@Input('second') second: string;
constructor() {
}
public validate(ac: AbstractControl): { [key: string]: any } {
console.log(ac.root);
return null;
}
}
これは、フィールドのHTMLです:
<md-input-container class="full-width">
<input mdInput
type="password"
required
ngModel name="passwordConfirmation"
#passwordConfirmation="ngModel"
minlength="6"
maxlength="30"
pattern="(?=^.{6,30}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
validateEqual
first="password"
second="passwordConfirmation"
placeholder="{{'PASSWORD_RECOVERY.PASSWORD_CONFIRMATION' | translate}}">
<md-error *ngIf="passwordConfirmation.touched && passwordConfirmation.invalid">
<span *ngIf="passwordConfirmation.errors.required">
{{'PASSWORD_RECOVERY.FIELD_REQUIRED' | translate}}
</span>
<span *ngIf="passwordConfirmation.errors.minlength || passwordConfirmation.errors.maxlength">
{{'PASSWORD_RECOVERY.PASSWORD_LENGTH' | translate}}
</span>
<span *ngIf="passwordConfirmation.errors.pattern" class="p-md-error-multiline-div">
{{'PASSWORD_RECOVERY.FOR_A_SECURE_PASSWORD' | translate}}
</span>
</md-error>
</md-input-container>