Angular 2自定义验证器:检查输入值是否为整数?

2023-12-20

在 Angular2 项目中,我需要验证一些输入。 如何轻松检查输入值是否为整数?

我尝试使用Number(control.value)返回0对于空的字段 - 不好。

or parseInt(control.value,10)不考虑空格:

如果我有类似的东西: 1 空间 0,24 =1 ,024它返回 1 - 通过验证器且没有错误。

Lodash 的功能如下:_.isInteger(control.value) or _.isNumeric(control.value) // return false every time- 这是预期的,因为输入值是字符串而不是数字。

组合这样的方法会创建一个带有许多 if/else 语句的混乱函数,即使这样,我也不确定我是否得到了所有的边缘情况。我绝对需要一种更直接的方法。有任何想法吗?


这是迄今为止我发现的最干净的方法:

应用程序组件.html:

<input formControlName="myNumber">

应用程序组件.ts:

export class AppComponent {
    myNumber:FormControl

    constructor(private _ValidatorsService: ValidatorsService){
    }

    this.myNumber= new FormControl('defaultValue',
        [ Validators.required, this._ValidatorsService.isInteger ]);
}

验证器.service.ts:

function check_if_is_integer(value){
   // I can have spacespacespace1 - which is 1 and validators pases but
   // spacespacespace doesn't - which is what i wanted.
   // 1space2 doesn't pass - good
   // of course, when saving data you do another parseInt.

   return ((parseFloat(value) == parseInt(value)) && !isNaN(value));

}

@Injectable()
export class ValidatorsService {

   public isInteger = (control:FormControl) => {

        // here, notice we use the ternary operator to return null when value is the integer we want.
        // you are supposed to return null for the validation to pass.

        return check_if_is_integer(control.value) ? null : {
           notNumeric: true
        }
   }

}

Enjoy!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2自定义验证器:检查输入值是否为整数? 的相关文章

随机推荐

  • 如何仅解析特定对象而不反序列化整个 JSON 文件?

    我有一个巨大的 JSON 文件 数万个对象 gt 100 MB 文件 我正在尝试解析以提取特定对象 由于文件太大 我尝试仅反序列化我需要的特定部分 如果可能的话 而不必反序列化整个文件 应根据特定属性的值找到所述对象 arena id xx
  • 在 Android Studio 中搜索整个项目中出现的所有字符串

    我刚刚开始使用 Android Studio IntelliJ 现在我正在寻找该功能来查找项目中任何文件中字符串的出现情况 例如 我想找到所有包含字符串 的文件 getUuid 右上角的搜索没有给我正确的结果 并且我认为我无法在 编辑 gt
  • SQL CE 4 System.Transaction 支持

    有人问了类似的问题here https stackoverflow com questions 3401796 does sql ce 4 ctp support ambient transactions using system tran
  • Python 中的反向索引?

    我知道a 结束 开始 1 以相反的顺序对列表进行切片 例如 a range 20 print a 15 10 1 prints 15 11 print a 15 0 1 prints 15 1 但您无法到达第一个元素 示例中为 0 看来 1
  • 将 Eclipse 迁移到缺少 build.gradle 的 Android Studio

    正如许多人所建议的 我正在尝试从 Eclipse 切换到 Android Studio 遵循以下建议https developer android com sdk installing migrate html https develope
  • 如何在 VSIX 项目中的解决方案文件夹中获取项目

    您好 我在 Visual Studio 扩展内的自定义构建任务遇到问题 我需要识别我的自定义项目类型的项目 如果它们位于解决方案的根目录中 我可以很好地做到这一点 但是当它位于解决方案文件夹内时 就会出现问题 我可以将解决方案文件夹作为 E
  • “无法为未命名的组件创建方法”

    以下代码 在包中注册时 为我们提供了一个名为TParentComponent已登记在托盘中Test 但是 当您使用属性编辑器 在同一代码中提供 创建子对象时 IDE 会显示错误消息无法为未命名的组件创建方法 奇怪的是Child对象确实有一个
  • 那是什么('Z' - 'A')

    在Currency java 文件中有一行 private static final int A TO Z Z A 1 这是什么意思 我以前没有看到这个 A TO Z 的值是什么以及为什么它使用 Z 而不是数字 用这个表达你正在治疗char
  • 如何在每个记录器的基础上更改 Python 日志消息的格式?

    读完后文档关于logging http docs python org py3k library logging html module logging 我知道我可以使用这样的代码来执行简单的日志记录 import logging def
  • 如何从命令行停止/启动特定的 WebSphere 部署的 EAR?

    我正在将一个依赖项 jar 放入 WebSphere 应用程序服务器上的分解 EAR 中 我需要停止 启动 EAR 以使 WS 执行新代码 有没有办法从命令行执行此操作 尝试运行这样的东西 opt ibm websphere appserv
  • 用户注销时删除 HKEY_CURRENT_USER 值

    Windows 服务在下创建一个注册表值 用于 Excel 加载项 HKEY CURRENT USER每个登录用户的注册表项 通过调用ImpersonateLoggedOnUser http msdn microsoft com en us
  • JQuery 幻灯片切换超时

    我有简单的 html 页面
  • 位移位大型二进制文件?

    在 C 中对大量二进制数据进行位移位的最佳或推荐方法是什么 我有一个 200K 二进制文件 我想左移然后右移整个文件 如果您的操作系统可以支持它 请使用内存映射文件 然后做一点移位就会非常非常高效 请参阅此答案以获取更多信息 内存映射文件有
  • browserify external 与 except 之间有什么区别?

    我在用着browserify并试图让它跳过浪费时间包括或解析 jquery 和其他require less 文件我通过 CDN 加载 我应该使用bundle exclude jquery or bundle external jquery
  • Apple iOS 浏览器随机不会呈现动态加载的 HTML 对象

    我们遇到的问题仅在 iOS 浏览器 iOS 12 0 上明显 我们的 SPA 应用程序使用 HTML 对象标签通过 JavaScript 将小部件 HTML CSS JS 文件 加载到页面上 该问题是间歇性的 当页面加载时 某些小部件不会在
  • 在 AWS DynamoDB 上存储聊天日志?

    我正在考虑使用 AWS DynamoDB 构建一个聊天应用程序 该应用程序将支持一对一和群聊 我想为每个聊天创建一个表 其中每个发送的聊天文本行都有一条记录 DynamoDB 适合这种工作吗 我也在考虑合并两个表 但是 如果 假设 有 10
  • MongoDB 身份验证错误

    连接 Mongodb 时出现此错误 我不太确定这个错误是什么 使用 CompositeServerSelector Selectors ReadPreferenceServerSelector ReadPreference Mode Pri
  • 并排对齐 2 个 div

    我需要并排对齐 2 个 div 它们都位于没有设置高度的包装 div 内 我的问题是 当我分别使用 float left 和 float right 时 div 似乎不会 留在 包装器 div 内 我可以看出 因为包装器 div 与页面具有
  • 如何保持 RxJ 干燥

    DRY 不要重复自己 假设我在我的应用程序中经常使用以下代码 observable pipe tap value gt console log value map value gt value 5 more repeated stuff 假
  • Angular 2自定义验证器:检查输入值是否为整数?

    在 Angular2 项目中 我需要验证一些输入 如何轻松检查输入值是否为整数 我尝试使用Number control value 返回0对于空的字段 不好 or parseInt control value 10 不考虑空格 如果我有类似