Exigeant une case à cochée

Je veux un bouton sera désactivé jusqu'à ce qu'une case à cocher a été vérifié à l'aide d'un FormBuilder Angulaire. Je ne veux pas explicitement vérifier la valeur de la case et préfèrent utiliser un validateur pour que je puisse vérifier simplement form.valid.

Dans les deux cas de validation ci-dessous la case à cocher est

interface ValidationResult {
  [key:string]:boolean;
}

export class CheckboxValidator {
  static checked(control:Control) {
    return { "checked": control.value };
  }
}

@Component({
  selector: 'my-form',
  directives: [FORM_DIRECTIVES],
  template: `  <form [ngFormModel]="form" (ngSubmit)="onSubmit(form.value)">
    <input type="checkbox" id="cb" ngControl="cb">
    <button type="submit" [disabled]="!form.valid">
    </form>`
})

export class SomeForm {
  regForm: ControlGroup;

  constructor(fb: FormBuilder) {
    this.form = fb.group({
      cb: [ CheckboxValidator.checked ]
      //cb: [ false, Validators.required ] <-- I have also tried this
    });
  }

  onSubmit(value: any) {
    console.log('Submitted: ', this.form);
  }
}
  • Quel est donc le problème, votre deuxième version fonctionne très bien [ false, Validators.required ].
  • Dans le second cas, pour moi au moins, le this.form.value est { cb: false } et this.form.valid est true
  • Regardez la réponse. this.form.valid n'est pas plustrue.
  • Maintenant, vous pouvez utiliser Validators.requiredTrue
InformationsquelleAutor nathasm | 2016-02-17