代码之家  ›  专栏  ›  技术社区  ›  YK mar

FormGourp的至少一个控件有效,可以启用提交表单

  •  1
  • YK mar  · 技术社区  · 7 年前

    我的FormGroup上有两个控件我需要验证两个控件中的至少一个才能提交表单

    如果只有一个FormControl有效,我需要formGroup有效

    this.form = this.fb.group({
            'keyWord' : new FormControl(null, [
              Validators.required,
              Validators.minLength(4)
            ]),
            'name':  new FormControl(null, [
              Validators.required
     ])
    
          });
    

    html

     <form [formGroup]="form" (ngSubmit)="isPending=!isPending;searchCriteria(form.value);" class="form-group" novalidate>
            <small class="text-danger" *ngIf="?????">At Least One Field is required</small>
            <div class="input-group box-shadow">
                <div class="input-group-addon border-top-0 border-left-0 border-bottom-0 rounded-0">
                    <i class="fa fa-search"></i>
                </div>
                <input type="text" formControlName="keyWord" placeholder="" class="form-control border-0">
                <input type="text" formControlName="name" placeholder="" class="form-control border-0">
                <button type="submit" value="submit">
          </form>
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Iancovici    7 年前

    将submit按钮的disabled属性作为表单有效性的函数

    <button type="submit" value="submit" [disabled]="(!form.get('keyWord').valid) && (!form.get('name').valid) ">
    

    首先,我们使用 <form name>.get('<member name>')

    然后,我们使用如下布尔逻辑 首先,所有都将无效,所以disabled将为true,因为当它们无效时,valid为0,我们将其取反为1。所以1 | | 1=1,如果一个是有效的,那么有效的是1,并且!valid是0,因此我们以0 | | 1=0结束,而忽略其余部分。

        2
  •  0
  •   Shailesh Ladumor    7 年前

    你可以试试这个

    <form [formGroup]="form" (ngSubmit)="isPending=!isPending;searchCriteria(form.value);" class="form-group" novalidate>
                <small class="text-danger" *ngIf="?????">At Least One Field is required</small>
                <div class="input-group box-shadow">
                    <div class="input-group-addon border-top-0 border-left-0 border-bottom-0 rounded-0">
                        <i class="fa fa-search"></i>
                    </div>
                    <input type="text" formControlName="keyWord" placeholder="" class="form-control border-0">
                    <input type="text" formControlName="name" placeholder="" class="form-control border-0">
                    <button type="submit" value="submit" [disabled]="isvalid()">
              </form>
    

    组件功能

      isValid(): boolean {
             if(this.form.get('keyWord').valid ||this.form.get('name').valid){
                retrun false;
             }
          return true;
        }