Angular:如何正确重置 react 形式

标签 angular

此处使用 Angular 6 的响应式形式。

我的页面上几乎没有带有提交和重置按钮的控件。所有控件都需要进行现场验证。 当用户单击提交按钮时,应选择所有控件。 单击重置按钮后,我想将所有控件重置为其初始状态。

下面是我的一个控件的 html:

 <div class="form-group" [formGroup]="userForm">
  <label class="col-md-2 control-label">Environment</label>
  <div class="col-md-4" [ngClass]="{ 'has-error': userForm.hasError('required', ['environment']) && isSubmitted}">
    <select class="form-control input-large" formControlName="environment">
      <option value=''>-- Select --</option>
      <option [ngValue]="d.Id" *ngFor="let d of data">
        {{d.Name}}
      </option>
    </select>
    <div class="invalid-feedback">
      <em *ngIf="userForm.hasError('required', ['environment']) && isSubmitted">*Required</em>
    </div>
  </div>
</div>

下面是我的 Controller 中的重置按钮单击:

  resetClicked() { 
    this.createObjectForm.reset();    
  }

上面的代码可以工作,但问题是它还会再次触发所有验证,因此我的所有控件都变成红色。

我搜索并尝试了以下代码:

  Object.keys(this.createObjectForm.controls).forEach(key => {
        this.userForm.get(key).clearValidators();
  });

但是这个只有当我点击重置按钮两次时才有效。

我也尝试了下面的代码,但结果相同:

this.userForm.markAsPristine();
this.userForm.markAsUntouched();
this.userForm.updateValueAndValidity();

任何人都可以提供他们的意见。

演示:https://stackblitz.com/edit/angular-v6l2z5-eseqlr

最佳答案

当您重置表单时,控件将返回到其无效状态(尚未选择)。所以需要设置 isSubscribed = false;

    resetClicked() {
     this.userForm.reset();  
     this.isSubmitted = false;
  }

(你的 stackblitz 有所帮助)

这可能在 html 中使用更好

<em *ngIf="userForm.controls.environment.invalid && isSubmitted">*Required</em>

关于Angular:如何正确重置 react 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627587/

相关文章:

Docker 容器中.Net Core 托管的 Angular 6 应用程序抛出 Npm 异常

angular - 当 proxy.conf.json 中的路径更改时,Java 应用程序无法识别更改

javascript - 返回数据时 Observable 订阅不执行

javascript - 与 Iframe Angular 交互后的 Chrome 后退按钮问题

html - ng2-datepicker 选项不起作用

Angular2 RC : Added controls with addControls method after creation of the ControlGroup is not working

typescript - RXJS Observable doSomething onComplete

angular - Uncaught Error : Cannot find module "tslib"

angular - Angular 的 HTTP 请求中不包含特定参数

Angular 6+ :ProvidedIn a non root module is causing a circular dependency