我有一个表单数组,我也在动态添加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()));
});
}