Angular 2 不仅仅是文本区域中的空格

标签 angular angular-forms angular-validation

我目前正在尝试验证 Angular 2 中的文本区域不只有空格或换行符(/n 或/r)

我已经尝试过 this方法,但我担心将其与 <textarea> 一起使用时任何换行符都会使输入无效,即使其中有值,因此当有人按 Enter 键创建新行时,有效模式会转换为无效模式。

参见this plunker了解更多信息。

基本上:

<textarea autocomplete="off" [formControl]="newComment" id="comment"></textarea>

<button type="submit" [disabled]="!newComment.value || newComment.valid">
    Comment
</button>

newComment = new FormControl('', [Validators.pattern("\\s*")]);

所以我的观点是,我可以做到这一点,但我确信我做错了,因为当我检查文本区域时,ng 值显示 ng-invalid 并且我确信我正在混合概念。

对我来说,当它无效时,我们应该禁用输入,而不是相反,但因为 Validators.pattern 是关于与该模式匹配的内容,所以我们必须使用 !并反转 ng-valid 属性的输出。我说得对吗?

非常感谢您的帮助。

编辑:我知道当有空格或换行符时我的逻辑匹配,但这是因为这是丢弃“空”文本区域的最简单方法,但我正在寻找一种更清晰的方法来做到这一点。

最佳答案

不久前我遇到了类似的问题,唯一的解决方法是创建一个自定义函数来验证字段,因为正则表达式使带有其他所需字符(例如换行符)的文本区域无效:

export function validateEmptyField(c: FormControl) {
  return c.value && !c.value.trim() ? {
    required: {
      valid: false
    }
  } : null;
}

用法:

newComment = new FormControl('', [validateEmptyField]);

关于Angular 2 不仅仅是文本区域中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867993/

相关文章:

ios - 如何在 IOS Nativescript 中的 ActionItem/ActionBar 中使用 Image

angular - 如何创建具有延迟和限制尝试的 RXjs RetryWhen

angular - 在此服务器上找不到请求的 URL - Angular 2 Routing with Google Cloud

angular 4 将包含其他对象的对象传递给 FormBuilder.group 函数会导致奇怪的表单行为

validation - Angular 2,带参数的自定义验证消息

angular - PrimeNG Tree - 以编程方式选择 TreeNode

angular - 当使用patchValue方法更新表单值时,表单变脏?

angular 2 : TypeError: this. form.updateValueAndValidity 不是函数

所有子控件的 Angular 形式 updateValueAndValidity