2017-08-22 51 views
0

在聲明表單模型時,是否可以將任意元數據添加到Angular2 +中的FormControl向FormControl添加任意元數據

喜歡的東西:

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

我想使用這個元數據存儲錯誤消息特定的控制。

注意:我可以將錯誤消息存儲在單獨的變量中,但每個字段都顯示一個只接收一個@Input的自定義組件:FormControl的實例。我想避免聲明第二個輸入來傳遞錯誤消息。

回答

0

您可以創建一個也返回消息的驗證程序。

例子:

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 }}