Angular 2不仅仅是textarea中的空格

时间:2017-12-18 11:55:57

标签: angular angular-forms angular-validation

我目前正在尝试将角度为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的最简单方法,但我正在寻找一种更清晰的方式这样做。

1 个答案:

答案 0 :(得分:2)

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

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

用法:

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