首页 > 解决方案 > 角度表单生成器验证

问题描述

我通过以下两个代码部分验证了我的表单:

this.formAdd = this.formBuilder.group({
  objectId: [null, [Validators.required]],
  objectOrder: [null, [Validators.required]],
  objectName: [null, [Validators.required]],
  objectCreateDate: [null, [Validators.required]],
  objectSex: [null, [Validators.required]],
  objectAddress: [null, [Validators.required]],
  objectNational: [null, [Validators.required]],
  objectType: [null, [Validators.required]],
});

this.formUpdate = this.formBuilder.group({
  objectId: [[null], [Validators.required]],
  objectOrder: [[null], [Validators.required]],
  objectName: [[null], [Validators.required]],
  objectCreateDate: [[null], [Validators.required]],
  objectSex: [[null], [Validators.required]],
  objectAddress: [[null], [Validators.required]],
  objectNational: [[null], [Validators.required]],
  objectType: [[null], [Validators.required]],
});

第一部分用于在添加新记录时验证我的表单,第二部分用于更新现有记录时,当我尝试将代码的第二部分应用于添加表单时,它不起作用并且添加即使值为空,表单也始终有效。

使用'[]'和不使用'[]'有什么区别

标签: angularformbuilder

解决方案


这取决于构建 Angular 所需验证器的方式:

它检查:

  1. control 的值不应为 null / undefined
  2. 如果字符串/数组长度不应该为 0

因此,由于[null]是长度为 1 的数组,因此角度认为它是有效的

您可以在此处此处参考源代码


推荐阅读