将任意元数据添加到 FormControl
Add arbitrary metadata to a FormControl
有没有办法在 Angular2+ 中声明表单模型时向 FormControl
添加任意元数据?
类似于:
// In this fake example, {foo: 'bar'} is the metadata
const ctrl = new FormControl('some value', validator, asyncValidator, {foo: 'bar'});
我想使用此元数据来存储特定控件的错误消息。
注意:我可以将错误消息存储在一个单独的变量中,但是我的每个字段都显示有一个自定义组件,该组件只接收一个@Input:FormControl 的实例。我想避免声明第二个输入来传递错误消息。
您可以创建一个也 returns 消息的验证器。
示例:
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 }}
有没有办法在 Angular2+ 中声明表单模型时向 FormControl
添加任意元数据?
类似于:
// In this fake example, {foo: 'bar'} is the metadata
const ctrl = new FormControl('some value', validator, asyncValidator, {foo: 'bar'});
我想使用此元数据来存储特定控件的错误消息。
注意:我可以将错误消息存储在一个单独的变量中,但是我的每个字段都显示有一个自定义组件,该组件只接收一个@Input:FormControl 的实例。我想避免声明第二个输入来传递错误消息。
您可以创建一个也 returns 消息的验证器。
示例:
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 }}