我正在开发一个新的基于角度的应用程序,基于电子邮件和密码的登录表单。
它为这些字段提供了一个表单,由以下行定义:
let formConfig = {
email: ['', [Validators.required, Validators.email]],
password: ['', [Validators.required]],
};
this.form = this.formBuilder.group(formConfig)除了一种情况外,它的工作原理与预期一样:
当用户使用三星(和其他人)的自动完成来填充电子邮件字段时,它在电子邮件之后插入一个空空间,而Validators.email则假设它是无效的电子邮件。
我的问题是如何解决这一特殊情况?
我非常肯定,我可以把一些现有的电子邮件验证regex,但我不喜欢重新发明车轮,如果验证器存在,创建另一个看起来疯狂。
可以实现某种类型的验证器来修改窗体控件值,去掉空白空间吗?
发布于 2018-03-19 23:33:54
我不明白为什么您不使用常规的javascript对其进行正则化处理,然后再使用它进行其他操作。
您可以使用regex /$/在字符串的末尾进行匹配,我将使用/\s{1,} $/,这样就可以捕获任何一个或更大的“空格”字符。有电子邮件验证器在外面,但当然,你需要首先摆脱空白,在最后。
我认为教学regex将超出范围,但这就是我如何处理来自自动完成的杂乱输入。
另一个建议是关闭自动完成,这样你就不会得到杂乱无章的东西,但这只会惹恼用户(这让我很烦)。
发布于 2019-09-30 13:17:26
我也有过同样的经历。
对于仍面临这一问题的每一个人;
将type="email"与Validators.email结合起来添加到您的<input>中应该可以做到这一点。
https://stackoverflow.com/questions/49373761
复制相似问题