validation - Angular 2,带参数的自定义验证消息

标签 validation angular angular-validation

我刚刚开始使用 JS/Typescript 和 Angular 2,并且正在努力解决以下问题。

export function MinImageDimensionsValidator(minWidth: number, minHeight: number): ValidatorFn {

return (control: AbstractControl): { [key: string]: any } => {

        // it's an image control where a user uploads an image.
        // the whole image related code has been removed for better readability. 
        //Just assume that 'actualWidth' holds the actual width of the image

        if(actualWidth < minWidth) {
           return { valid: false };
        }

        return null;
};

}

这只是验证器工厂的一个非常基本的示例。

我发现的所有示例都直接在模板中写入验证消息/错误(我正在使用模板表单)

是否可以将验证消息“绑定(bind)”到验证器本身并使用参数?

喜欢:

'Min width has to be 100. you supplied ' + actualWidth

这将从验证器本身返回。

或者还有其他方法(除了将所有内容存储在变量中之外)?

最佳答案

是的,您可以从验证器返回任何对象。在你的情况下,它可能是这样的

return { minImageDimensions: { min: minWidth, value: actualWidth } }

当显示字段验证错误时,您可以这样做:

<input #myField="ngModel" [(ngModel)]="...">
<span *ngIf="myField.errors.minImageDimensions">
    Min width has to be {{ myField.errors.minImageDimensions.min }}.
    You supplied {{ myField.errors.minImageDimensions.value }}.
</span>

或者更好地使用一些本地化和带有参数的消息。您可以创建一个组件,该组件将采用字段对象并根据 myField.errors 对象显示您在应用程序中使用的各种错误消息。

关于validation - Angular 2,带参数的自定义验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43224480/

相关文章:

angular - 向 *ngTemplateOutlet 或 ng-template 的内容添加事件监听器

javascript - 如何检测 Angular 4中的浏览器后退点击

javascript - 如何在 <form> 标签内进行 angular.js 验证

angular - Angular 8 中的动态密码验证器

validation - Yii2 日期比较验证

python - 如何在 python 中检查平台不兼容的文件夹(文件)名称

javascript - SHA256 使用 Filereader 问题以 Angular 6 散列大文件

javascript - 如何以 Angular react 形式执行最小和最大验证?

javascript - V-validate 不适用于插值属性

php - 如何使 Laravel 的验证器 $rules 可选?