将任意元数据添加到FormControl

时间:2017-08-22 12:21:38

标签: 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的实例。我想避免声明第二个输入来传递错误消息。

1 个答案:

答案 0 :(得分:0)

您可以创建一个也会返回消息的验证器。

示例:

<?php
    $string="हिन्दी";
    $string="Manvendra Rajpurohit";
    echo strlen($string); echo '<br>';
    echo mb_strlen($string, 'utf-8');
    echo '<br>';
    if(strlen($string) != mb_strlen($string, 'utf-8'))
    { 
        echo "Please enter English words only:(";
    }
    else {
        echo "OK, English Detected!";
    }
?>

您可以像这样使用它:

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')]
    });