我目前正在尝试将角度为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的最简单方法,但我正在寻找一种更清晰的方式这样做。
答案 0 :(得分:2)
前一段时间我遇到了类似的问题,解决问题的唯一方法就是创建一个自定义函数来验证字段,因为正则表达式使文本区域与其他理想字符(如换行符)无效:
export function validateEmptyField(c: FormControl) {
return c.value && !c.value.trim() ? {
required: {
valid: false
}
} : null;
}
用法:
newComment = new FormControl('', [validateEmptyField]);