1down votefavorite 
<https://stackoverflow.com/questions/50245581/how-to-validate-a-formcontrol-with-prepopulated-data-in-angular-5#>

I have a form-group. In the form-group, i have a form-array. I have 
initialized the array with items created from data in the data model with 
the method as described in angular's documentation on reactive forms, under 
the section Initialize the secretLairs FormArray. The problem is i need to 
perform validation.required for each form control in the array. However, 
since the form-controls already hold values, i do not know how to perform 
validation.required. The documentation did not go further on how to 
validate formcontrols in a formarray that are prepopulated.

Here are my source codes:

.html

    <!-- list of Questions -->
   <div formArrayName="questions">
     <!-- <div *ngFor="let que of Questions; let k=index"> -->
      <div *ngFor="let question of Ques ; let i=index" [formGroupName]="i" >

        <!-- The repeated questions template -->
      <h4>{{question.ques}}</h4>
      <div style="margin-left: 1em;">
        <!-- <div class="form-group">
         <label class="center-block">
          <input class="form-control" formControlName="ques" >
         </label>
            </div> -->

         <div class="form-group radio" *ngFor="let choice of 
         question.choices; let j = index">

         <input type="radio"  formControlName="choices"
         class="custom-control-input" [value]="choice.choiceText">
         <label>{{choice.choiceText}}</label>
         </div> 

         <br>
         <!-- End of the repeated questions template -->

         </div>
         </div>
         </div>
         <button type="submit" class="btn btn-danger" 
         [disabled]="!CheckListForm.valid">Submit</button>
         </form>

.ts

  export class CheckListFormComponent implements OnInit, OnChanges {

  CheckListForm: FormGroup;

  Ques: Questions[];

  employmenttype = ['Permanent', 'contractor'];



   constructor(private fb: FormBuilder,
               private checklistservice: ChecklistService) { 
      this.CreateForm();

                                                            }

     ngOnInit() {
    this.checklistservice.getQuestions(1).subscribe(res =>{ this.Ques =res;
    this.setquestions(this.Ques)
                 }); 


    this.CheckListForm.get('EmploymentType').valueChanges.subscribe(

    (EmploymentType: string) => {
      if (EmploymentType === 'Permanent') {
        this.CheckListForm.get('HRMS').setValidators([Validators.required]);

     this.CheckListForm.get('CompanyName')
      .setValidators([Validators.nullValidator]);
      } else if (EmploymentType === 'contractor') {

        this.CheckListForm.get('CompanyName').
        setValidators([Validators.required]);

        this.CheckListForm.get('HRMS').
        setValidators([Validators.nullValidator]);
                                                 }

         this.CheckListForm.get('HRMS').updateValueAndValidity();
         this.CheckListForm.get('CompanyName').updateValueAndValidity();
                                                               }
                                                                   )
                                                                        }


-- 
You received this message because you are subscribed to the Google Groups 
"Angular and AngularJS discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to