function validateCandidate()

in src/types/MSetType.ts [11:36]


function validateCandidate(a:Assembly, schema:MFieldSchemaAnonymity, value:any, path:string): MValidationResult {
  let fs = MUtil.option(schema);
  const openOption = _.clone(schema.openOption ?? schema.setOpen)
  
  for(let v of value){
    let vIsOk = false;
    for(let f of fs){
      if(MUtil.isEquals(f.value, v, schema.tolerate)){
        vIsOk = true;
        break; // v校验ok
      }
    }
    if(!vIsOk) {
      if(openOption) {
        openOption.required = true; // 既然勾上了开放选项,就必须填
        const vr = assembly.validate(openOption, v, path);
        if(vr) { // 开放值无效
          return vr;
        }
      } else {
        return {message:"请重新选择", path};
      }
    }
  }
  return undefined;
}