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

Angular 2 NOT only whitespaces in textarea

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

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

有关详细信息,请参阅 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 属性 的输出。我说的对吗?

非常感谢您的帮助。

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

我刚才遇到了类似的问题,解决的唯一方法是创建一个自定义函数来验证该字段,因为 Regex 使带有换行符等其他所需字符的文本区域无效:

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

用法:

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