angular - 提交后删除验证器

标签 angular typescript devextreme devextreme-angular

我创建了两个文本框,一个用于标题,另一个用于名称。

如果文本框未填写,我将使用验证,因此只有在两个文本框都已填写时才会提交信息。

我的问题是,提交后我尝试清除变量的值,并且在清除该值时出现验证消息。

有没有办法提交成功并清除变量的值,验证器不出现?

DEMO

html

<div style="margin-top:16px;width:50%">
    <dx-text-box placeholder="title..." [showClearButton]="true" [(ngModel)]="title">
        <dx-validator>
            <dxi-validation-rule type="required" message="Insert Title">
            </dxi-validation-rule>
        </dx-validator>
    </dx-text-box>
</div>
<div style="margin-top:16px;width:50%">
    <dx-text-box placeholder="name..." [showClearButton]="true" [(ngModel)]="name">
        <dx-validator>
            <dxi-validation-rule type="required" message="Insert Name">
            </dxi-validation-rule>
        </dx-validator>
    </dx-text-box>
</div>

<dx-button text="Submit" [useSubmitBehavior]="true" (onClick)="Save()"></dx-button>

.ts

title: string;
name: string;

Save(){
  if(this.title == "" || this.title == undefined || this.name == "" || this.name == undefined){
  }
  else{
    alert("Sucess !!");
    this.title = "";
    this.name = "";
  }
}

问题

Image

在这里,我填写了文本框并成功提交。我清除了变量的值,但是当这样做时,验证器被激活,而实际上一切都应该处于初始状态:(

最佳答案

这是我通常用来在提交后清除所有验证器的技巧。

  @ViewChildren(DxValidatorComponent) validatorViewChildren: QueryList<DxValidatorComponent>;

  private clearDxValidators = () => {
    this.validatorViewChildren.toArray().map(ref => {
      ref.instance.reset();
    })
  }


阅读更多关于 reset() 的信息

关于angular - 提交后删除验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62084038/

相关文章:

html - Primeng turbo 表格单元格数据与其他单元格重叠

angular - 子模块中的 RouteReuseStrategy

typescript :根据自定义类型检查 "typeof"

javascript - Angular2 - 通过超时函数将变量与 EventEmitter 传递给父组件

typescript - 从 Javascript 转换为 Typescript、Knockout 和 DevExtreme 控件

angular - 如何从 displaywith mat-slider 属性中的组件获取值

css - md-输入容器 : overwrite padding in mat-input-wrapper

import - node_modules 的 Angular2 和 TypeScript 导入

angular - ng2 - DevExtreme vs Telerik Kendo UI

html - 使用 Angular2 DevExtreme 显示和隐藏表单元素