1

Angular 2 form validation is not working, I can not find where I did mistake. Please help me how to resolve this issue.

https://stackblitz.com/edit/angular-6-reactive-form-validation-jb2snp?file=app/app.component.ts

app.component.ts:

      this.registerForm = this.formBuilder.group({
        userType: ['', Validators.required],
        modalType: ['', Validators.required],
        place: ['', Validators.required], 
        onebhk: ['', Validators.required],
        twobhk: ['', Validators.required],
        min: ['', [Validators.required, Validators.minLength(3)]],
        max: ['', [Validators.required, Validators.minLength(6)]]
    });
1
  • Are there any erros in the console? Commented Sep 3, 2018 at 9:42

3 Answers 3

2

problem in your html, for radio button you have to you formControlName and name should be same

like this,

<div class="col-md-4">
      <label>
          <input type="radio" formControlName="onebhk" name="onebhk" value="yes" /> 1 BHK
       </label>
       <label>
          <input type="radio" formControlName="twobhk" name="twobhk" value="no" /> 2 BHK
        </label>
  </div>
Sign up to request clarification or add additional context in comments.

Comments

1

remove name attribure fom this control name="onebhk" and name="twobhk"

<div class="col-md-4">
      <label>
          <input type="radio" formControlName="onebhk" value="yes" /> 1 BHK
      </label>
      <label>
          <input type="radio" formControlName="twobhk" value="no" /> 2 BHK
      </label>
</div>

Comments

1

You should not use name and formControlName together:

DEMO

Image Of Solution

enter image description here HTML:

<!-- main app container -->
<div class="jumbotron">
    <div class="container">

        <form [formGroup]="registerForm" (ngSubmit)="onSubmit()">

            <div class="row show-grid">
                <div class="col-md-8 border">

                    <div class="row">
                        <div class="col-md-5">
                            <div class="form-group">
                                <label>Flat Name:</label>
                                <select id="type" formControlName="userType" class="form-control">
                                    <option value="null">Select</option>
                                    <option *ngFor="let userType of userTypes">{{userType}}</option>
                                </select>

                                <p style="color:red" *ngIf="registerForm.get('userType').hasError('required') && registerForm.get('userType').touched"> Required</p>
                            </div>
                        </div>
                        <div class="col-md-5">
                            <div class="form-group">
                                <label>Modal</label>
                                <select id="type" formControlName="modalType" class="form-control">
                                    <option value="null">Select</option>
                                    <option *ngFor="let modalType of modalTypes">{{modalType}}</option>
                                </select>
                                <p style="color:red" *ngIf="registerForm.get('modalType').hasError('required') && registerForm.get('modalType').touched">
                                    Required</p>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-5">
                            <div class="form-group">
                                <label>Place</label>
                                <input type="text" formControlName="place" class="form-control" />
                                <p style="color:red" *ngIf="registerForm.get('place').hasError('required') && registerForm.get('place').touched"> Required</p>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label>Home type</label>
                        <div class="col-md-4">
                            <label>
                                    <input type="radio" formControlName="onebhk"  value="yes" /> 1 BHK
              </label>
                            <p style="color:red" *ngIf="registerForm.get('onebhk').hasError('required') && registerForm.get('onebhk').touched"> Required</p>
                            <label>
                                    <input type="radio" formControlName="twobhk"  value="no" /> 2 BHK
              </label>
                            <p style="color:red" *ngIf="registerForm.get('twobhk').hasError('required') && registerForm.get('twobhk').touched"> Required</p>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-5">
                            <div class="form-group">
                                <label>Min</label>
                                <input type="text" formControlName="min" class="form-control" />
                                <p style="color:red" *ngIf="registerForm.get('min').hasError('required') && registerForm.get('min').touched"> Required</p>
                                <p style="color:red" *ngIf="registerForm.get('min').hasError('minlength')"> Minimum length should be 3</p>
                                <p style="color:red" *ngIf="registerForm.get('min').hasError('min')"> Minimum 200</p>


                            </div>
                        </div>
                        <div class="col-md-5">
                            <div class="form-group">
                                <label>Max</label>
                                <input type="text" formControlName="max" class="form-control" />
                                <p style="color:red" *ngIf="registerForm.get('max').hasError('required') && registerForm.get('max').touched">Required</p>

                                <p style="color:red" *ngIf="registerForm.get('max').hasError('minlength') "> Minimum length should be 6</p>

                                <p style="color:red" *ngIf="registerForm.get('max').hasError('max')"> Maximum 200000</p>
                            </div>
                        </div>
                    </div>

                </div>

                <div class="col-md-4 border">
                    <div class="row">
                        <div class="form-group">
                            <button class="btn btn-primary">Submit</button>
                        </div>
                    </div>
                </div>
            </div>

        </form>

    </div>
</div>

1 Comment

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.