angular 表单生成器验证

angular formbuilder validatation

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

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]],
});

第一部分用于在我添加新记录时验证我的表单,第二部分用于当我更新现有记录时,当我尝试应用代码的第二部分来添加表单时,它是'无法正常工作,添加表单始终有效,即使值为 null。

使用“[]”和不使用“[]”有什么区别

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

它检查:

  1. 控件的值不应为空/未定义
  2. 如果字符串/数组长度不应为 0

因此,由于 [null] 是一个长度为 1 的数组,因此 angular

认为它是有效的

可以参考源码here and here