首页 > 解决方案 > 从角度验证器返回奇怪的值

问题描述

我创建了一个如下所示的反应式表单,我从服务器获得的数据中填充它:

newUserInfoForm = this.formBuilder.group({
    personalInfo: this.formBuilder.group({
      name: [undefined, [Validators.required, Validators.pattern('.*\\S+.*')]],
    }),
    legalInfo: this.formBuilder.group({
      companyName: [undefined, [Validators.required, Validators.required]],
    }),
  });

问题是当我尝试验证表单时,我得到了一个奇怪的行为。当我记录整个this.newUserInfoForm.get('personalInfo').get('name')时,我看到有效属性为真,但当我记录时this.newUserInfoForm.get('personalInfo').get('name').valid它是假的。您也可以在附图中看到这一点

将它们都记录在控制台中

如您所见,表单是有效的,但是在我登录时的第一行this.newUserInfoForm.get('personalInfo').get('name').valid它返回 false

checkFormValidation() {
    console.log(
      `this.newUserInfoForm.get('personalInfo').get('name').valid = ` + this.newUserInfoForm.get('personalInfo').get('name').valid
      // just to demonstrate properly I have added the string above
    );
    console.log(this.newUserInfoForm.get('personalInfo').get('name'));
    // this will return me the form which I have attached the photo of
  }

从服务器订阅数据并设置表单值后,我将调用此checkFormValidation()方法(例如将“farBrand”设置为名称)

那么有什么解决方案吗?

标签: javascriptangularformsvalidationangular-forms

解决方案


推荐阅读