Jak wyłączyć przycisk „Prześlij”?


127

Jak wyłączyć przycisk „Prześlij”, dopóki formularz nie będzie ważny?

Czy angular2 ma odpowiednik ng-disabled, którego można użyć na przycisku Submit? (ng-disabled nie działa dla mnie.)


1
tylko wtedy, gdy używasz walidacji pośredniej, na przykład podczas pisania. Nie rób tego ... tylko z dobrym przemyśleniem lub z asynchroniczną walidacją, która polega na przykład na zapleczu.
Sam Vloeberghs

Odpowiedzi:


243

Jak widać na tym przykładzie Angulara , istnieje sposób na wyłączenie przycisku, dopóki cały formularz nie będzie prawidłowy:

<button type="submit" [disabled]="!ngForm.valid">Submit</button>

jak uzyskać wartość radia i pola wyboru za pomocą formBuilder?
Pardeep Jain

odsyłacz ma na przykład starą składnię dla angular2 ng-form-modal. poproś go o aktualizację dzięki.
Pardeep Jain

Sprawdź ten przykład, składnia jest aktualna -> blog.jhades.org/…
Angular University,

1
jak możesz zweryfikować formularz, jeśli wyłączysz przycisk przesyłania (chyba że robisz to w przepływie, ale nie zawsze mi się to podoba)? Proszę mieć świadomość obaw związanych z UX tutaj ..
Sam Vloeberghs

6
[disabled] = „ngForm.invalid” można również sprawdzić
shaunak1111

47

w Angular 2.xx , 4 , 5 ...

<form #loginForm="ngForm">
    <input type="text" required> 
    <button  type="submit"  [disabled]="loginForm.form.invalid">Submit</button>
</form>

7

.html

<form [formGroup]="contactForm">

<button [disabled]="contactForm.invalid"  (click)="onSubmit()">SEND</button>

.ts

contactForm: FormGroup;

Chociaż ten kod może odpowiedzieć na pytanie, dostarczenie dodatkowego kontekstu dotyczącego tego, jak i / lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi.
Nic3500

5

Oto działający przykład (musisz mi zaufać, że na kontrolerze jest metoda submit () - wypisuje ona obiekt, na przykład {user: 'abc'}, jeśli w polu wejściowym wprowadzono 'abc':

<form #loginForm="ngForm" (ngSubmit)="submit(loginForm.value)">
    <input type="text" name="user" ngModel required>
    <button  type="submit"  [disabled]="loginForm.invalid">
        Submit
    </button>
</form>

Jak widzisz:

  • nie używaj loginForm.form, po prostu użyj loginForm
  • loginForm.invalid działa tak samo jak! loginForm.valid
  • jeśli chcesz, aby funkcja przesyłania () otrzymywała poprawne wartości, element wejściowy powinien mieć atrybuty name i ngModel

Dzieje się tak również wtedy, gdy NIE używasz nowego FormBuildera, który polecam. W przypadku korzystania z FormBuilder sytuacja wygląda zupełnie inaczej.


4

W Angular 2 walidacja formularza jest bardzo prosta

Oto przykład,

<form (ngSubmit)="onSubmit()" #myForm="ngForm">

 <div class="form-group">
  <label for="firstname">First Name</label>
  <input type="text" class="form-control" id="firstname" 
   required [(ngModel)]="firstname" name="firstname">
 </div>

 <div class="form-group">
  <label for="middlename">Middle Name</label>
  <input type="text"  class="form-control" id="middlename" 
   [(ngModel)]="middlename" name="middlename">
 </div>

 <div class="form-group">
  <label for="lastname">Last Name</label>
  <input type="text"  class="form-control" id="lastname" 
   required minlength = '2' maxlength="6" [(ngModel)] = "lastname" name="lastname">
 </div>

 <div class="form-group">
  <label for="mobnumber">Mob Number</label>
  <input type="text"  class="form-control" id="mobnumber"  
   minlength = '2' maxlength="10" pattern="^[0-9()\-+\s]+$" 
   [(ngModel)] = "mobnumber" name="mobnumber">
 </div>

 <button type="submit" [disabled]="!myForm.form.valid">Submit</button>

</form>

Sprawdź ten plunker w wersji demonstracyjnej

Więcej informacji


2

Ważne jest, aby umieścić słowo kluczowe „ wymagane ” w każdym z obowiązkowych znaczników wejściowych, aby zadziałało.

 <form (ngSubmit)="login(loginForm.value)" #loginForm="ngForm">
    ...
    <input ngModel required name="username" id="userName" type="text" class="form-control" placeholder="User Name..." />
    <button type="submit" [disabled]="loginForm.invalid" class="btn btn-primary">Login</button>

0

Może pomóc poniższy kod:

<button type="submit" [attr.disabled]="!ngForm.valid ? true : null">Submit</button>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.