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

角度材质:提交父窗体时,所需的mat输入字段不显示错误

姬锐
2023-03-14

为了代码重用的目的,并在我的Web应用程序中保持一致的功能,我在我的应用程序中创建了一个输入组件,其作用是在父窗体中嵌入一个mat-输入。

当mat输入是必填字段时,组件会在父窗体中正确显示该字段,当用户与该字段交互但未输入任何内容时,会显示错误。但是,在没有用户与嵌入字段进行任何交互的情况下提交父表单时,不会显示任何错误。请参见下面的StackBlitz url:

https://stackblitz.com/edit/angular-material2-issue-jph57r

我已在Angular Material上发布了上述内容(见:https://github.com/angular/material2/issues/9788)但也许我遗漏了什么。

我错过什么了吗?有解决办法吗?

共有2个答案

荆树
2023-03-14

在窗体上使用markAllAsTouched()方法将控件及其所有子控件标记为已触摸。

官方角度API参考

柳翼
2023-03-14

以下变通方法由Jefiozie在GitHub发布。代码循环遍历窗体的所有控件,并将它们标记为已触摸。

private setFormGroupTouched(formGroup: FormGroup) {
    Object.keys(this.formGroup.controls).forEach(field => {
      const control = this.formGroup.get(field);
      control.markAsTouched({ onlySelf: true });
    });
  }
 类似资料:
  • 我试图使用“背景动画边框输入-材料2.0”输入,如图所示:https://mdbootstrap.com/docs/jquery/forms/inputs/#animated-inputs 我也在使用“懒惰加载”方法(关于路由)。 这是原件 这是它应该工作的方式 这就是它~实际上~所做的 问题是“输入字段”工作不正常。输入数据时,字符“覆盖”标签 如何解决这个问题?如果这需要一个特定的模块,在哪里

  • 我遇到过这篇文章,当选择在输入之后时效果很好,但是在输入之前如何将它与mat select一起使用呢?一旦我切换顺序,组件就变得不可用,字段内的每次单击都会触发选择。 在一个表单字段中输入和选择角度材质 我的叉子:https://stackblitz.com/edit/angular-6nqzf1-ox413y?file=app/form-字段概述示例。html

  • 我有一个名为Ad的实体类,它包含如下字段 问题是当我试图使用这个实体创建表单时,横幅文本字段不显示(不呈现),只有标签。 我注意到字段的id是ad_banner如果我改变浏览器检查元素中的id,它将被显示... Symfony中ad_banner什么,为什么它隐藏它? 我不想改变字段的名称,也不想改变树枝上的id,因为我想保持简单,就像这样: 我试图从表单生成器更改字段的id,但没有成功。谢谢你!

  • 我想按照本指南实现一个角度材质自定义表单字段:https://material.angular.io/guide/creating-a-custom-form-field-control 但我一直有这样的错误:错误:mat表单字段必须包含MatFormFieldControl。 根据文件: 如果没有将表单字段控件添加到表单字段,则会出现此错误。如果表单字段包含本机或元素,请确保已向其添加matIn

  • > 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?

  • 我目前面临着一个奇怪的问题,即mat芯片列表和输入。我有一个表单组,它有两个表单控件:contacts和name。 此窗体的视图如下所示: 问题:当我从输入字段中删除所有元素时,父窗体(formGroup)被标记为无效,但formGroup的错误属性不包含任何值。所以错误永远不会出现。 其他尝试:但当我使用一个正常的输入元素,该元素具有matInput属性,但没有mat芯片列表时,当我删除输入字段