Angular 基于eval的角焊缝动态形状验证

Angular 基于eval的角焊缝动态形状验证,angular,angular-forms,Angular,Angular Forms,我在Angular 7中有一个动态表单,字段、控件类型、可见性、验证,所有内容都来自数据库。我知道,对于动态表单,如果来自数据库的验证是在角度验证中构建的,那么就容易多了,但我想做的是为每个控件类型的验证数组构建一个自定义验证,并使用eval,将其评估为真/假,并基于此显示相应的错误消息 这在我的用例中不起作用,因为它们使用内置的角度验证。Remyaj,链接显示验证程序来自类似 validations: [{ name: "required", validator: Validators

我在Angular 7中有一个动态表单,字段、控件类型、可见性、验证,所有内容都来自数据库。我知道,对于动态表单,如果来自数据库的验证是在角度验证中构建的,那么就容易多了,但我想做的是为每个控件类型的验证数组构建一个自定义验证,并使用eval,将其评估为真/假,并基于此显示相应的错误消息


这在我的用例中不起作用,因为它们使用内置的角度验证。

Remyaj,链接显示验证程序来自类似

validations: [{
  name: "required",
  validator: Validators.required,
  message: "Name Required"
  }]
如果这来自dbs,你的对象可以是

validations: [{
  name: "required",
  message: "Name Required"
  },
  {
  name:"custom",
  message: "Name Custom error"
  }]
你唯一需要做的就是在收到数据后制作一张地图,比如

getShema().pipe(map((res:any)=>{
     res.forEach((field:any)=>{
         if (field.validations)
         {
              field.validations.forEach(validator=>{
                     switch (validator.name)
                     {
                           case "required":
                                validator.validator=Validator.required
                                break;
                           case "custom":
                                validator.validator=myCustomValidator
                                break;
                           ...
                     }
              }
         }
     }
     return res
})

您不能简单地创建自定义验证器并使用它们吗?