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