如何修复角度表单控件中的“找不到名称为 __v 的表单控件”错误?

Posted

技术标签:

【中文标题】如何修复角度表单控件中的“找不到名称为 __v 的表单控件”错误?【英文标题】:How to fix "Cannot find form control with name: __v" error in angular form control? 【发布时间】:2019-08-20 07:17:12 【问题描述】:

我正在使用 Mongoose 作为我的应用程序的后端。每当我尝试使用我的 API 保存数据时,都会添加一个名为 __v 的附加列。我浏览了他们的文档并注意到额外的字段用于版本控制。

我的 Angular 前端应用程序中有一个 CRUD。每当我发出获取请求时,我都会收到以下错误消息。

ERROR Error: Cannot find form control with name: __v.
    at FormGroup.push../node_modules/@angular/forms/fesm5/forms.js.FormGroup._throwIfControlMissing (forms.js:3605)
    at forms.js:3462
    at Array.forEach (<anonymous>)
    at FormGroup.push../node_modules/@angular/forms/fesm5/forms.js.FormGroup.setValue (forms.js:3461)
    at EmployeeService.push../src/app/services/employee.service.ts.EmployeeService.load (employee.service.ts:54)
    at EmployeesComponent.push../src/app/components/employees/employees.component.ts.EmployeesComponent.onEdit (employees.component.ts:47)
    at Object.eval [as handleEvent] (EmployeesComponent.html:81)
    at handleEvent (core.js:19545)
    at callWithDebugContext (core.js:20639)
    at Object.debugHandleEvent [as handleEvent] (core.js:20342)

一些建议是删除集合中 __v 字段的创建。但我想保留该字段并仍然确保没有错误。有人可以帮我解决这个问题吗?

【问题讨论】:

可以分享你的组件代码 请发布您的 html 代码。看起来您正在尝试访问变量中从未存在的属性,因此您必须使用 [] 或 ?. 【参考方案1】:

使用patchValue() 而不是setValue()

组件.ts

this.myForm.patchValue(responce)

【讨论】:

以上是关于如何修复角度表单控件中的“找不到名称为 __v 的表单控件”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何以角度反应形式访问表单控件和表单组

如何修复错误从用户控件中的主窗体获取数据?

如何使用响应式表单将验证器添加到表单控件以从角度材料进行匹配输入

添加角度表单控件值在 html 中

以角度 8 在表单控件中输入数量时获取总值

如何修复用户控件中的闪烁