Angular 2不仅仅是textarea中的空格

问题描述 投票:1回答:1

我目前正在尝试验证角度为2的textarea,而不是只有空格或换行符(/ 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*")]);

所以我的观点是我得到了它,但我确定我做错了,因为当我检查textarea时,ng值显示ng-invalid,我确信我正在混合概念。

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

非常感谢你的帮助。

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

angular angular-forms angular-validation
1个回答
2
投票

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

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

用法:

newComment = new FormControl('', [validateEmptyField]);
© www.soinside.com 2019 - 2024. All rights reserved.