3 votes

Angular ng-required

J'ai mon FormGroup avec quelques FormControles et tous sont requis mais je veux que deux de mes FormControles ne soient requis que si un booléen dans mon component.ts est vrai J'ai essayé ng-required="myboolean" mais ça n'a pas marché. Existe-t-il un moyen de faire cela ou une solution de contournement ?

//edit

onButtonClick()
  {
    this.passwordFormControl = !this.passwordFormControl;

    if(this.passwordFormControl)
    {
      this.passwortButton = "Cancle change Password";
      this.benutzerAnlageForm.get('password').setValidators(Validators.required);
    }
    else
    {
      this.passwortButton = "Change password";
      this.benutzerAnlageForm.get('password').clearValidators();
    }
  }

 <form [formGroup]="MyForm" (ngSubmit)="onMyForm()">

  <div *ngIf="passwordFormControl" class = "form-group">
      <label for="password">Password</label>
      <input formControlName="password" type="password" id="password" 

 <-- Some more Form Controles that are always required -->

  <button type="submit" [disabled]="!MyForm.valid" class ="btn btn-primary">Save</button>
  <button *ngIf="edit" type="button" class="btn btn-primary" (click)="onButtonClick()">{{passwortButton}}</button>
  </form>

Le Password FormControl est le contrôle dont je ne veux pas toujours qu'il soit requis. Le problème est que si je supprime le caractère obligatoire du contrôle de formulaire de mot de passe, le formulaire lui-même et le bouton ne semblent pas reconnaître que le formulaire est à nouveau valide.

8voto

Vinod Bhavnani Points 1031

Ng-required est pour AngularJs qui est 1.x. Pour Angular ou Angular 2+ vous pouvez faire ceci :

<input [required]="myboolean">

Vous pouvez également le faire dynamiquement dans votre component.ts lorsque la valeur booléenne change, comme ceci :

this.form.get('control-name').setValidators(Validators.required);
this.form.get('control-name').updateValueAndValidity();

A enlever :

this.form.get('control-name').clearValidators();
this.form.get('control-name').setValidators(/*Rest of the validators if required*/);
this.form.get('control-name').updateValueAndValidity();

0voto

Zoha Irshad Points 171
// To add validation     
   this.myForm.controls.controlName.setValidators(Validators.required);

// To clear validation
   this.updateForm.controls.controlName.clearValidators();

// In either case, call this method
   this.updateForm.controls.controlName.updateValueAndValidity();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X