Angular 2从自定义验证程序

时间:2017-03-02 04:05:20

标签: validation angular

我在angular 2中编写了一个自定义验证器

function validateSomething(): ValidatorFn {
  return (control: Abstractcontrol): { [key: string]: any } => {
    return {'validateSomething': 'Validation failed because'};
  }
}

非常简单的验证器。现在在html中,我根据验证器的输出显示一个对话框。我想要的是能够从验证器显示错误('验证失败,因为')。我看到的大多数教程在html中使用了hasError('validateSomething'),然后对错误进行硬编码,如下所示:

<div class="ui pointing orange basic label" *ngIf="form.controls['workDate'].hasError('validateSomething')">
    Here I want to display the message from the validator 
</div>

有没有办法可以从验证器获取错误消息?

2 个答案:

答案 0 :(得分:6)

使用AbstractControl#getError()

<div 
  class="ui pointing orange basic label"
  *ngIf="form.getError('validateSomething', 'workDate') as error>
  {{ error }}
</div>

DEMO

答案 1 :(得分:0)

我们假设您有自定义验证指令( appValidateSomething ),它执行一些验证逻辑。 '验证'方法如下:

validate(c: AbstractControl): { [key: string]: any; } {
    const v = c.value;
    if (isValid(v)) {
        return null;
    } else {
        // Return error object.
        return {
            'invalidValue': v
        }
    };
}

在HTML代码中,您可以编写以下代码:

<input [(ngModel)]="model" type="text" #obj1="ngModel" appValidateSomething/>
<div *ngIf="obj1.errors && (obj1.dirty || obj1.touched)">
    <div [hidden]="!obj1.errors.invalidValue">Wrong value.</div>
</div>

重要的是,来自验证功能的返回错误对象的'invalidValue'与错误对象'。errors.invalidValue'匹配。