【问题标题】:How to prevent form submit until all validations are passed [Angular 7]在所有验证通过之前如何防止表单提交[Angular 7]
【发布时间】:2020-02-05 12:26:52
【问题描述】:

我是 Angular 的新手。我已经彻底阅读了thisthisthis 的问题,但是它们都不是我用的,因为它们正在使用jquery。我的表格是非常基本的注册表单,只有 4 个基本字段。用户名、密码、确认密码和邮政编码以及提交按钮。为了保持这篇文章干净并且涉及多个文件,我在 github 上上传了必要的文件。

  1. app.component.html
  2. app.component.ts
  3. app.module.ts

我正在分别处理 passwordzipcode 的验证器

  1. validator.ts

验证工作正常。但问题是即使前端存在验证问题,表单仍然会被提交。这是我的截图。请给我一个解决方案或至少给我一些提示。

PS:我正在关注this youtube 教程。

【问题讨论】:

    标签: angular typescript angular2-form-validation


    【解决方案1】:

    首先,禁用按钮

    <button type="submit" class="btn btn-primary" (click)="onSubmit()" [disabled]="!form.valid">Submit</button>
    

    接下来,在提交前使用条件。

      onSubmit(){
        if (!this.form.valid) return;
    
        // console.log(this.form.controls.zip);
        this.form.markAsTouched();
        console.log(this.form.value);
    
      }
    

    最后,将该属性添加到您的表单中:

    <form [formGroup]="form" novalidate>
    

    【讨论】:

    • +1 用于添加程序验证。我经常看到人们仅仅依靠禁用按钮。
    • @ak.leimrey 你打他们的喉咙了吗?我会:D
    • 我全心全意地接受这一点。我很尴尬,我什至无法弄清楚小问题。 :-( 谢谢@Maryannah。
    • @Maryannah 我希望。话又说回来,这让我觉得自己很聪明,以至于我没有这样做,鉴于我的技能有限,我需要每一点验证!
    • @Maryannah。是的先生。总是。
    猜你喜欢
    • 2017-02-08
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多