Angular 2+反应形式验证 - 无论是这个还是那个

时间:2017-09-13 23:14:43

标签: forms angular validation

我有一个3字段表格 - 名字,姓氏,身份证号码 - 我想设置这样,以便用户必须在两个名字字段中输入数据或输入表格的ID号码才能生效“submittable”。

我的代码是

ngOnInit() {
    this.person = this.fb.group({
      'fname': [],
      'lname': [],
      'certID': []
    },{
      validator:(formgroup:FormGroup)=>{
        return this.validateInput(formgroup);
        }
      }
    );
  }

  validateInput(formgroup:FormGroup){
    if(formgroup.controls["fname"].value && formgroup.controls["lname"].value || formgroup.controls["certID"].value){
      console.log('OK');
      return {validateInputData:true};
      }
      else {
        console.log('Not OK');
      return null;
      }
  }

虽然在加载表单/页面并且生成“失败”(“不正常”)时运行此验证,但提交按钮仍处于活动状态:

<button type="submit" class="btn btn-success" 
[disabled]="submitPending || person.invalid">
Submit<span *ngIf="submitPending" class="glyphicon glyphicon-refresh glyphicon-refresh-animate"></span>
</button>

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您的退货声明是否会倒退?

当一切正常时返回null,当它不正常时返回错误。

if((formgroup.controls["fname"].value && formgroup.controls["lname"].value)
                || formgroup.controls["certID"].value){
  console.log('OK');
  return null;
  }
  else {
    console.log('Not OK');
    return {validateInputData: true};
  }

'validateInputData'属性将是错误集合中错误的名称。