【问题标题】:Casting a string to an Angular2 Form Validator type将字符串转换为 Angular2 表单验证器类型
【发布时间】:2019-05-01 02:17:22
【问题描述】:

我正在使用带有动态表单的 Angular 7

我存储了一些表单配置,例如输入:“文本”等来构建我的表单。这些存储在数据库中。我将验证存储为验证器:“Validators.required”。现在,当我想构建动态表单并将验证分配给表单控件时,使用:

validations.forEach(valid => {
   validList.push(valid.validator);
});
return Validators.compose(validList);

我收到以下错误: Screenshot

现在我假设这是因为我将 Validators.required 存储为一个导致它失败的字符串,因为它实际上不是我从 angular/forms 导入的 Validator 类型。

对于我的问题:如何将存储的字符串转换为 Validators 类型。我试过使用castValidator = (valid.validator as Validators); 这给了我同样的错误。

我考虑过只做一个 switch 语句来检查字符串,然后将相关的验证器推送到数组中,但这似乎是一个糟糕的解决方案。我必须考虑每种 Validator 类型,甚至不会考虑自定义验证。

【问题讨论】:

    标签: javascript angular forms validation angular7


    【解决方案1】:

    如果数据以字符串形式保存,数据以键值对形式保存。然后,您必须使用 JSON.parse() 解析从数据库中获取的内容。

    【讨论】:

    • 试过了,现在我得到以下错误:ERROR SyntaxError: Unexpected token V in JSON at position 0 when using validList.push(JSON.parse(valid.validator));
    • 你的问题是你试图从不存在的东西中提取数据。试试 console.log(valid.validator);
    • 它存在,使用 console.log 给出 - Validators.required,就像我预期的那样。问题是它是字符串类型的,它需要是 angular/forms 库中的 Validators 类型。
    • 能否请您演示一下您在 stackblitz 上尝试的内容。
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多