首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >6角图不匹配

6角图不匹配
EN

Stack Overflow用户
提问于 2018-10-22 08:13:47
回答 2查看 1.5K关注 0票数 1

假设有一个输入类型编号,并且可以在这个类型编号中的麻木是:

代码语言:javascript
复制
10.0
100.00
100
1

(该数字可以有无限制的整数部分和具有至少2位数的十进制部分)。因此,如果我将这个值放入输入类型7..字段中,它将显示我的“错误模式”。

这是我的html:

代码语言:javascript
复制
<input type="number" class="form-control" [(ngModel)]="home" name="home" required min="0" step="1" pattern="^[0-9]+(?:[,.]0{1,2})?$" >

在我使用TD表单时,我在ts中检查哪种错误是:

form.controls.home.errors.pattern

代码语言:javascript
复制
form.controls.home.errors.pattern

问题是当我输入"7....“时。它显示了一个“必需”错误,而不是“模式”错误。有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-10-22 08:19:04

required在这里是一个有效的错误,因为input[type="number"]返回一个带有number类型的值,并且只要输入不是一个有效的数字,它就返回null

这意味着,如果这里有一个required验证,它将被触发(这再次有效,因为输入中没有有效的数字)。

另外,使用pattern来对付number也有点奇怪。

相反,你可以做的是

  • 实现任何您想要的逻辑的自定义验证器。为了实现这些(甚至是找到现成的),请检查例如这个回购
  • 使用标准的input[type="text"],它没有这个缺点,可以用模式进行检查。
票数 1
EN

Stack Overflow用户

发布于 2018-10-22 08:29:43

问题

您的实现看起来很好,但是与输入类型number有关的问题很小。您正在尝试赋值7..,它基本上是一个字符串值,并且试图分配number input。这是不可能的无论是角还是HTML5,都不会允许你这样做。

修复

修复很简单。只需将input类型控件转换为text类型控件即可。

代码语言:javascript
复制
    <input type="text" class="form-control" [(ngModel)]="home" 
name="home" required min="0" step="1" pattern="^[0-9]+(?:[,.]0{1,2})?$" >

如果你想要验证最小和最大,那么你有这些验证的角度。

如果您更进一步,那么您需要编写pipedirective来处理这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52924915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档