我目前正在尝试验证 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/