我正在用Angular 8和Angular Material编写a small project。
我有一个a number field,我想在其中指定最小值和最大值,但是我找不到任何关于如何在the matInput documentation中执行此操作的文档。
问题:matInput
是否支持最小/最大验证?在Angular 材料中验证数字字段的最佳方式是什么?
到目前为止,我尝试了标准的html5最小和最大属性,不幸的是,验证引擎没有捕捉到这些属性。我还尝试了一些来自互联网的例子,这些例子在Angular 8中不起作用。
5条答案
按热度按时间6kkfgxo01#
为了验证matInput的内容,可以将其 Package 在mat-form-field中,如下所示:
并对验证器使用表单控件:
这适用于最小值和最大值,您可以以相同的方式使用minlength和maxlength验证器,文档如下:
https://angular.io/api/forms/Validators
wqnecbli2#
我建议您使用React式表单,因为它将使您的业务逻辑留在ts代码中,使您的模板更容易阅读和维护。
还有你的html
8yoxcaq73#
你可以使用React式的方法来创建表单。这些在第一次的时候可能看起来很可怕,但是最终在设置不同的验证器时会非常有帮助。
步骤1:导入依赖关系
步骤2:创建新的FormObject
步骤3:创建模板
步骤4:添加验证器
jslywgbw4#
默认情况下,Angular 模板驱动的表单无法验证最小和最大HTML5验证-这是一个框架问题。您可以编写一个指令来解决这个问题,或者更简单的解决方案是在提交时验证表单。
我所陈述的问题可以在这里看到和测试https://stackblitz.com/edit/angular-input-min-max?file=src/app/app.component.html
有几个指令可用,一个我能够找到,但它也有一些问题。自己试试
https://www.concretepage.com/angular-2/angular-4-min-max-validation#Template-driven
另一种可能的简洁方法是在代码中使用React式表单而不是模板驱动的表单:)
5uzkadbs5#
试试看:
minlength
和maxlength
但类型不应是数字,例如:
Demo