【发布时间】:2018-10-30 21:15:03
【问题描述】:
我正在尝试进行自定义验证,因此我创建了以下指令:
import {Directive, Input} from '@angular/core';
import {AbstractControl, NG_VALIDATORS, Validator} from '@angular/forms';
@Directive({
selector: '[appEqualValidator]',
providers: [
{provide: NG_VALIDATORS, useExisting: EqualValidatorDirective, multi: true}
]
})
export class EqualValidatorDirective implements Validator {
@Input('inputOne')
inputOne: string;
@Input('inputTwo')
inputTwo: string;
constructor() {
}
validate(c: AbstractControl) {
const value = c.value;
if ((value == null || value === undefined || value === '') && this.inputOne === this.inputTwo) {
return {
equalTo: {condition: this.inputOne === this.inputTwo}
};
}
return null;
}
}
现在我正在尝试将其添加到我的表单中,但是我在使用多个输入时遇到了一些问题:
<div class="form-group">
<label>E-mail</label>
<input type="email" class="form-control" placeholder="Indtast email" [(ngModel)]="model.email" name="email" [email]="true" required/>
</div>
<div class="form-group">
<label style="display: block">Gentag E-mail</label>
<input type="email" class="form-control" placeholder="Gentag email" [(ngModel)]="model.emailRepeat" required [email]="true"
[appEqualValidator]="value" name="emailRepeat"/>
<li *ngIf="!emailVerify">
De to emails er ikke ens
</li>
</div>
我不确定如何在表单中使用指令。并确保我可以得到两个输入。
我希望你们中的一些人能指出我正确的方向。
【问题讨论】:
-
你考虑过使用响应式表单吗? Angular 有验证器,你可以毫不费力地实现这些验证器。见这里:angular.io/guide/form-validation
-
@IvanS95 这是否有一个等于你可以匹配两个输入字段的地方?
标签: javascript angular forms