Как отключить кнопку "Отправить", пока форма не станет действительной?
Есть ли у angular2 эквивалент ng-disabled, который можно использовать для кнопки "Отправить"? (ng-disabled не работает для меня.)
Как отключить кнопку "Отправить", пока форма не станет действительной?
Есть ли у angular2 эквивалент ng-disabled, который можно использовать для кнопки "Отправить"? (ng-disabled не работает для меня.)
Как видно из этого примера Angular, есть способ отключить кнопку, пока вся форма не станет действительной:
<button type="submit" [disabled]="!ngForm.valid">Submit</button>
в Angular 2.x.x, 4, 5...
<form #loginForm="ngForm">
    <input type="text" required> 
    <button  type="submit"  [disabled]="loginForm.form.invalid">Submit</button>
</form>
Вот рабочий пример (вам нужно доверять мне, что на контроллере есть метод submit() - он печатает объект, например {user: 'abc'}, если в поле ввода введена "abc" ):
<form #loginForm="ngForm" (ngSubmit)="submit(loginForm.value)">
    <input type="text" name="user" ngModel required>
    <button  type="submit"  [disabled]="loginForm.invalid">
        Submit
    </button>
</form>
Как вы можете видеть:
Кроме того, это когда вы НЕ используете новый FormBuilder, который я рекомендую. При использовании FormBuilder все очень отличается.
Проверка формы очень проста в Angular 2
Вот пример,
<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>
.html
<form [formGroup]="contactForm">
<button [disabled]="contactForm.invalid"  (click)="onSubmit()">SEND</button>
.ts
contactForm: FormGroup;
Важно, чтобы вы включили ключевое слово required внутри каждого из обязательных входных тегов, чтобы оно работало.
 <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>
Может быть ниже код может помочь:
<button type="submit" [attr.disabled]="!ngForm.valid ? true : null">Submit</button>
Это сработало для меня.
newForm : FormGroup;
<input type="button" [disabled]="newForm.invalid" />