Angular FormGourp至少有一个控件可用于启用提交表单

Angular FormGourp至少有一个控件可用于启用提交表单,angular,forms,form-control,formgroups,Angular,Forms,Form Control,Formgroups,我的FormGroup上有两个控件我需要验证两个控件中的至少一个,以使提交表单成为可能 如果只有一个FormControl有效,我需要该formGroup有效 this.form = this.fb.group({ 'keyWord' : new FormControl(null, [ Validators.required, Validators.minLength(4) ]), 'name': new

我的FormGroup上有两个控件我需要验证两个控件中的至少一个,以使提交表单成为可能

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

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

      });
html


至少需要一个字段

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

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

首先,我们使用
.get(“”)

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

您可以试试这个

<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>

你是说这个表格有效吗?或者提交按钮启用?是按钮启用这与验证器有点矛盾。这两个都是必需的,但您的案例表明两者都可以。谢谢您的回答,但表单有效。验证我的两个控件是否有效,但我只需要一个字段对我的表单有效。验证至少一个控件,而不是表单更改时调用的formisValid的所有控件?每时每刻都在变化!同步调用isValid。因此,如果您的表单发生更改,并且两个控件都无效。按钮禁用
<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;
    }