angular - 将任意元数据添加到 FormControl

标签 angular angular-forms

有没有办法在 Angular2+ 中声明表单模型时向 FormControl 添加任意元数据?

类似于:

// In this fake example, {foo: 'bar'} is the metadata
const ctrl = new FormControl('some value', validator, asyncValidator, {foo: 'bar'});

我想使用此元数据来存储特定控件的错误消息。

注意:我可以将错误消息存储在一个单独的变量中,但我的每个字段都显示有一个自定义组件,该组件只接收一个@Input:FormControl 的实例。我想避免声明第二个输入来传递错误消息。

最佳答案

您可以制作一个也返回消息的验证器。

例子:

static requiredValidator(message: string): ValidatorFn {

        return (control: FormControl): { [id: string]: string | IValidatorMessages } => {

            return (control && control.value && control.value.trim().length) ? undefined : { required: {
                message: message,
                valid: false
            } };
        };
    }

你可以像这样使用它:

this.form = this.fb.group({
      email: ['', Utilities.requiredValidator('Message')]
    });

然后在模板中的某处:

{{ form.get('email').errors?.required?.message }}

关于angular - 将任意元数据添加到 FormControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817520/

相关文章:

javascript - 错误 : Member 'feedbackFormDirective' implicitly has an 'any' type in angular

typescript - Angular2 嵌套路由不起作用

angular - 使用Typescript的Angular中的常量变量与枚举类型

html - Angular 并排显示 2 张卡片

angular - 响应式(Reactive)表单元素在 Dragula 的拖动幽灵中显示不同的 <select> 值

html - 如何选择 Angular 6 中的所有复选框?

html - 使用 Angular 进行条件 HTML 注释

angular - 根据复杂角色和字符位置验证输入文本字段

javascript - 如何在 Angular2 rc5 中获取路由参数?

javascript - 如何从子组件中获取父表单的字段?