「送信」ボタンを無効にする方法は?


127

フォームが有効になるまで「送信」ボタンを無効にする方法は?

angular2には、送信ボタンで使用できるng-disabledと同等のものがありますか?(ng-disabledは私には機能しません。)


1
入力時など、中間検証を使用する場合のみ。これを行わないでください。たとえば、バックエンドに依存する、十分な検討または非同期検証のみを行います。
Sam Vloeberghs 2016年

回答:


243

このAngularのにあるように、フォーム全体が有効になるまでボタンを無効にする方法があります。

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

formBuilderを使用してラジオとチェックボックスの値を取得する方法
Pardeep Jain

参照されたリンクには、たとえばangular2の古い構文がありますng-form-modal。彼に感謝を更新するように頼んでください。
Pardeep Jain、2016

この例を確認し、構文が最新である- > blog.jhades.org/...
角度大学

1
送信ボタンを無効にした場合、どのようにフォームを検証できますか(フローでそれを行う場合を除きますが、私はいつもそうではありません)?ここUXの懸念を認識してください。..
サムVloeberghs

6
[disabled] = "ngForm.invalid"も確認できます
shaunak1111


7

.html

<form [formGroup]="contactForm">

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

.ts

contactForm: FormGroup;

このコードは質問に答えることがありますが、問題を解決する方法および/または理由に関する追加のコンテキストを提供すると、回答の長期的な価値が向上します。
Nic3500 2018

5

これは実際の例です(コントローラーにsubmit()メソッドがあることを信頼する必要があります-入力フィールドに「abc」が入力された場合、{user: 'abc'}のようなオブジェクトが出力されます)。

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

ご覧のように:

  • loginForm.formを使用せず、loginFormを使用してください
  • loginForm.invalidは、!loginForm.validと同様に機能します。
  • submit()に正しい値を渡したい場合は、入力要素にname属性とngModel属性が必要です

また、これは、新しいFormBuilderを使用していないときです。FormBuilderを使用する場合、状況は大きく異なります。


4

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>

このプランカーのデモを確認してください

より詳しい情報


2

それが機能するためには、必須の入力タグのそれぞれの中に「必須」キーワードを含めることが重要です。

 <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

以下のコードが役立ちます:

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

0

これでうまくいきました。

.ts

newForm : FormGroup;

.html

<input type="button" [disabled]="newForm.invalid" />
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.