Angular:FormArray设置验证器

时间:2017-11-16 15:36:59

标签: angular typescript primeng

我有一个表单数组,我也在动态添加prime-ng复选框元素。我希望表单只有在选中至少一个复选框时才有效。但是,我的代码无法运行,让用户保存而不检查任何框。

HTML:

<form [formGroup]="addSystemAlertForm">

            <div class="ui-grid-row">
                            <label for="systemAlertTypesIds"><span class="required">*</span>Select at least one</label><br>

                        <div   formArrayName="systemAlertTypesIds" *ngFor="let systemAlertType of systemAlertTypes; let i = index"><p-checkbox  formControlName="{{ i }}" [value]="systemAlertType.id" [(ngModel)]="selectedSystemAlertTypes" [label]="systemAlertType.name"></p-checkbox> <br/><br/></div> 

        </form>

.TS:

constructor( injector: Injector,private fb: FormBuilder, confirmationService: ConfirmationService) { 
    super(injector);
    this.addSystemAlertForm = this.fb.group({


      'systemAlertTypesIds' : new FormArray([])
     });

  }


  //this method gets called before the checkboxes get rendered on the dialog
  getSystemAlertTypes(){
  this.systemAlertTypes = [];


  this.mccSystemAlertService.getSystemAlertTypes().subscribe(val => {
      val.payload["systemAlertType"].map(function (reg) {
        this.systemAlertTypes.push(reg);

      }.bind(this))

      let systemAlertsFormArray = <FormArray>this.addSystemAlertForm.controls['systemAlertTypesIds'];
      systemAlertsFormArray.setValidators(Validators.required);
     this.systemAlertTypes.forEach(reg => systemAlertsFormArray.push(new FormControl()));

  });
}

0 个答案:

没有答案