angular - 带有 .forEach 的自定义验证器 - 可以做得不同(更好)吗?
问题描述
我创建了自己的验证器类进行练习。这是一个好方法还是可以做得更好?
import { AbstractControl } from '@angular/forms';
export class ProjectNameValidator {
private static blackList = ['Test1'];
static correctName(control: AbstractControl): {[key: string]: boolean} | null {
const name: string = control.value;
let isValid = true;
ProjectNameValidator.blackList.forEach(forbiddenName => {
if (forbiddenName === name) {
isValid = !isValid;
}
});
return isValid ? null : {'Forbidden name': true};
}
}
解决方案
您遍历整个列表以检查其中一个是否无效(禁止),但是一旦您发现一个无效,您仍然会继续检查,最重要的是,如果您匹配的禁止名称数量相等,您将结束允许它。(isValid = !isValid)。
我建议使用 indexOf 如下:
ProjectNameValidator.blackList.indexOf(name) >= 0;
快速检查输入的值是否包含在黑名单中。
推荐阅读
- ngrok - 无法登录 Blazor WebAssembly
- java - Java如何使用条件删除对象类型的ArrayList
- docker - Docker中的Artifactory重定向到不同的端口
- api - 如何通过关注者数量和位置过滤来获取带有电子邮件和全名的 github 用户列表?
- angular - Angular 8 - 子路由器链接不起作用
- snowflake-cloud-data-platform - 雪花用变量创建数据库
- c# - 如何在 ASP.NET Core 剃须刀页面上有多个带有多个处理程序的 GET 按钮?
- logging - 如何限制 uWSGI 中的日志轮换次数?
- android - 如何阻止为Android应用截屏
- basic-authentication - Quarkus:通过网络服务进行基本身份验证