Angular 将任意元数据添加到FormControl

Angular 将任意元数据添加到FormControl,angular,angular-forms,Angular,Angular Forms,在声明表单模型时,是否有方法将任意元数据添加到Angular2+中的FormControl 比如: //在这个伪示例中,{foo:'bar}是元数据 const ctrl=new FormControl('some value',validator,asyncValidator,{foo:'bar'}); 我想使用此元数据存储特定控件的错误消息 注意:我可以将错误消息存储在单独的变量中,但我的每个字段都显示有一个自定义组件,该组件只接收一个@Input:FormControl实例。我希望避免声

在声明表单模型时,是否有方法将任意元数据添加到Angular2+中的
FormControl

比如:

//在这个伪示例中,{foo:'bar}是元数据
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 }}