Angular2表单 - 提交按钮已禁用?

Bon*_*lle 114 forms angular

如果表单有效,是否应禁用"提交"按钮?最佳实践?

angular2是否具有可以在"提交"按钮上使用的ng-disabled?(ng-disabled对我不起作用.)

Ang*_*ity 217

在这里看一个例子,在Angular 2中,这是一种禁用按钮的方法,直到整个表单有效:

<button type="submit" [disabled]="!ngForm.valid">Submit</button>
Run Code Online (Sandbox Code Playgroud)

  • [disabled] ="ngForm.invalid"你也可以查看 (6认同)
  • 如果禁用提交按钮,如何验证表单(除非您在流程中执行此操作,但我并不总是喜欢那样)?请注意这里的用户体验问题.. (2认同)

Bou*_*ine 43

角2.xx的,4,5 ...

<form #loginForm="ngForm">
    <input type="text" required> 
    <button  type="submit"  [disabled]="loginForm.form.invalid">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

  • [disabled] =“ loginForm.invalid”也适用。 (8认同)

小智 12

.html

<form [formGroup]="contactForm">

<button [disabled]="contactForm.invalid"  (click)="onSubmit()">SEND</button>
Run Code Online (Sandbox Code Playgroud)

.ts

contactForm: FormGroup;
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高​​答案的长期价值。 (2认同)

Joh*_*han 6

这是一个工作示例(您必须相信我,控制器上有一个 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>
Run Code Online (Sandbox Code Playgroud)

如你看到的:

  • 不要使用 loginForm.form,只使用 loginForm
  • loginForm.invalid 和 !loginForm.valid 一样有效
  • 如果您希望 submit() 传递正确的值,则输入元素应具有 name 和 ngModel 属性

此外,这是当您不使用我推荐的新 FormBuilder 时。使用 FormBuilder 时情况大不相同。