angular7+ng-zorro 表单验证失效

问题描述

model中嵌套表单,新建打开时,直接点击确定,没有显示错误提示。是dirty属性一开始就为false

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
// 提交新建修改
submitForm(): void{

for (let key in this.validateForm.controls) {
  this.validateForm.controls[ key ].markAsPristine();
  this.validateForm.controls[ key ].updateValueAndValidity();
}
console.log(this.validateForm.get('name').dirty);

}
ngOnInit() {

this.validateForm = this.fb.group({
  name : [null, [ Validators.required ]],
  price : [null, [ Validators.required ]],
  arr: [null,[ Validators.required ]],
  time: [null,[ Validators.required ]],
  remark: [null]
});

}

你期待的结果是什么?实际看到的错误信息又是什么?

clipboard.png

阅读 5.2k
2 个回答

今天突然灵光乍现,发现是提交时循环formControl的时候写错了一个地方,正确代码为

for (let key in this.validateForm.controls) {
   this.validateForm.controls[ key ].markAsDirty();  //不做任何操作也将每一个formControl视为修改过
   this.validateForm.controls[ key ].updateValueAndValidity();
}

但是新手需要注意的问题是,还得加上对validateForm.valid的判断,即使表单验证提示错误,后续写的提交代码还是会执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进