Angular2 - minLenght

minLenght validator 源码解读

  • 源码如下
static minLength(minLength: number): Function {
return (control: modelModule.Control): {[key: string]: any} => {
if (isPresent(Validators.required(control))) return null;
var v: string = control.value;
return v.length < minLength ?
{"minlength": {"requiredLength": minLength, "actualLength": v.length}} :
null;
};
}

问题纠结在这句:

if (isPresent(Validators.required(control))) return null;

首先我们需要知道一个前提: validator里面如果返回null说明验证通过

这里验证了这个control是否满足了Validators.required, 如果没满足则return null
意思是

  • 这里有required
  • 并且他没填
  • required 造成这个control 是invalid

返回null 说明 对于minLength 是通过了。但他的前提是 required已经造成invalid了。所以实际上minLenght 不返回错误完全不会影响这个control invalid的结果