【问题标题】:the form control name in form controls and in form value has difference表单控件和表单值中的表单控件名称有区别
【发布时间】:2020-10-13 09:20:35
【问题描述】:

我在一个带有表单的 angualr 项目中工作,但是表单控制字段中有一个问题,表单控制字段名称以前是基础,但我注意到尽管给出了一个值,但在提交表单后,表单控制值未定义。 查了项目没出结果,决定改表单控件名(希望能出结果),于是把表单控件名form base改成bace,但是遇到了更奇怪的东西……表单控件名in controls 是 bace,但 value 是 base(并且仍然未定义)

initialForm() {
this.calculateForm = this.fb.group({
  employeeId: [''],
  childrenCount: ['', Validators.required],
  jobPercent: ['', Validators.required],
  additionHour: ['', Validators.required],
  contracts: this.fb.array([
    this.fb.group({
      bace: ['', Validators.required],
      actionDate: ['', Validators.required],
      expirationDate: ['']
    })
  ]),
}
)

}

bace in controls (also in ts and html files)but "base" in form.value

<mat-form-field appearance="outline">
          <mat-label>salary</mat-label>
          <input matInput formControlName="bace" required>
        </mat-form-field>

有谁知道问题出在哪里?

【问题讨论】:

  • 你是如何获取 bace 的值的?
  • this.calculateForm.value.contracts.bace- 查看图片了解更多详情
  • 用这个组件创建 stackblitz

标签: angular


【解决方案1】:

这似乎很奇怪。你能创建一个 Stackblitz 来测试它吗?

我可以建议的另一件事是确保您没有遇到 ASCII 问题,因此文本看起来像 bace 中的“c”,但无法识别该字符(尽管我不认为是这种情况) .

您可以尝试的另一个测试是在模板(或组件类)中打印两种情况的值:

this.calculateForm.get('contracts').controls['bace']

this.calculateForm.get('contracts').controls['base']

看看“bace”案例是否能给你更多提示

【讨论】:

  • this.calculateForm.get('contracts').controls['bace'] 返回未定义!
  • 好的,这证实了您的屏幕截图并且 FormControl (bace) 不属于 FormGroup 控件。您是否使用特殊字符/ASCII?你试图用其他东西重命名变量,比如“testField”并检查它是否属于formGroup?如果是这种情况,那么它与您的属性中的“c”和“s”字符有关。
猜你喜欢
  • 2018-10-13
  • 2013-03-05
  • 1970-01-01
  • 2019-05-11
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多