当前位置: 首页 > 知识库问答 >
问题:

Formbuilder被动表单的自定义名称-Angular 7

彭骏
2023-03-14

现在我正在创建这个表单生成器:

 return this.fb.group(
      {
        myaccount: [ '', [Validators.required]]
        }
    );

当我收到我正在执行的元素的错误消息时:

Object.keys(formToValidate.controls).forEach(key => {

      const controlErrors: ValidationErrors = formToValidate.get(key).errors;
      if (controlErrors != null) {
        Object.keys(controlErrors).forEach(keyError => {
          if (keyError === 'required') {

            console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
          }

        });
      }
    });

显示:键控件:myaccount,键错误:必需,错误值:true

问题是我不想显示“myaccount”,而是要显示“myaccount”。我试图以某种方式做到这一点:

return this.fb.group(
      {
        myaccount: [ 'My Account','', [Validators.required]]
        }
    );

但这是不可能的。我该怎么做呢?

编辑:

我想显示标签(特定的),而不是表单上的值。我想为我的控制台自定义一个特定的名称。日志

共有3个答案

夹谷星河
2023-03-14

将Frame组视为一个普通的JavaScript对象,其关键是它的控制名,

const thisIsInvalid = {  My Account: 'Account Name'}

const thisIsValid = {'My Account': 'Account Name'}

return this.fb.group(
      {
        'My Account': [ '', [Validators.required]]
        }
    );

因此,将密钥名称从myAccount更改为My Account会出现错误,但将密钥名称从myAccount更改为“My Account”不会。希望这有帮助。

施阳夏
2023-03-14

这对我很有用。错误在于您正在打印formControl,而不是值

Object.keys(formToValidate.controls).forEach(key => {

  const controlErrors: ValidationErrors = formToValidate.get(key).errors;
  if (controlErrors != null) {
    Object.keys(controlErrors).forEach(keyError => {
      if (keyError === 'required') {

        console.log('Key control: ' + key.value + ', keyError: ' + keyError + ', err value: 
  ', controlErrors[keyError]);
      }

    });
  }
});  
冯枫
2023-03-14

基本上,您正在打印表单控件名称,并且希望显示值,而不是FormControlname。

在示例代码中,myaccount是FormControl名称,myaccount是FormControl值。

要显示FormControl值,您需要做的就是:

Object.keys(formToValidate.controls).forEach(key => {

      const controlErrors: ValidationErrors = formToValidate.get(key).errors;
      if (controlErrors != null) {
        Object.keys(controlErrors).forEach(keyError => {
          if (keyError === 'required') {

            console.log('Key control: ' + formToValidate.get(key).value+ ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
          }

        });
      }
    });
 类似资料:
  • 我有一个名为的自定义验证器函数。 如果我像这样设置表单,一切都工作了: 但是,如果我使用这样的表单生成器设置表单: 如果构造函数中将定义为,则验证不起作用。所谓“不工作”,我的意思是表单的valid属性不正确,在控制台中我看不到预期的输出(使用第一个方法显示)。 我没有在第二个方法中正确定义验证器(如果是这样的话,应该如何定义它),或者FormBuilder有什么东西使自定义验证器不可用?

  • 问题内容: 我们有一个Angular应用程序,该应用程序获取一些输入参数,并将其发送到后端进行处理。处理结果是一个我们要在新选项卡中打开的pdf文件。 这样做的代码如下所示: 一切正常,但浏览器中的URL显示一些随机生成的字符串,如下所示: 显然,这对于最终用户来说看起来不太好,我们希望显示一些对用户有意义的内容,例如: 我是JS的新手,Angular的新手,HTML的新手,希望我的问题听起来不是

  • 问题内容: 我想要一个Java枚举,其值是整数。 例如: 但是我也想要这两个常量的自定义名称, 例如“ Task Created”和“ Task Deleted”(那里有空格)。 我想尽可能优雅地做到这一点,而无需编写 太多额外的代码。 我可以在没有其他 将枚举常量映射到其自定义名称的映射的情况下实现此目标吗? 我在该项目中使用JDK 6。 问题答案: 只需为此添加一个字段: 如果您不想指定字符串

  • 问题内容: 我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是: 并没有帮助我,每次将baseV

  • 问题内容: 为什么这样的结构 给一个错误? 问题答案: 默认参数值在函数定义时评估,但仅在函数调用时可用。因此,参数列表中的参数不能相互引用。 将参数默认为默认值并在代码中为此添加测试是一种常见的模式:

  • 在不使用其他映射( 将枚举常量映射到它们的自定义名称)的情况下,我能做到这一点吗? 我在这个项目中使用JDK6。