angular - 带有可重用子组件示例的 Angular 8 反应式表单
问题描述
我使用 Angular Reactive Forms 和子组件在stackblitz.com上创建了一个解决方案。但是, -在 Input 元素上使用formControlName时出现错误。有人可以提供有关如何使用反应式表单和子组件的示例吗?
问题出在company.component.html中
<input type="text" formControlName="companyName">
解决方案
你使用formControlName
不正确。
formControlName
是一个 HTML 属性,用于在FormGroup
解析模板并附加处理程序时进行解释,它不需要方括号[]
。
这种混淆经常出现,因为您使用 Angular 输入标签[formControl]
来附加一个独立的FormControl,即[formControl]="myFormControl"
并且您需要将您的 formControlNames 更改为以下格式addresss.component.html
:company.component.html
formControlName="{{formControlName}}"
或者,您可以在这些组件中创建单独的 FormControl public StreetNameFormControl = new FormControl('')
,并使用以下格式引用它们:[formControl]="StreetNameFormControl"
.
编辑:作为旁注,根据经验,以这种方式构建表单通常会导致心痛。这是可能的,但除非您真的需要将表单分解为这些子组件,否则我建议您不要这样做。您可能会遇到的一个问题是稍后填充表单,例如,如果您想重用它们来编辑现有实体。您将不得不编写自定义代码以将值一直传递到您的组件以填充它们。另一方面,如果您将它们作为一个FormGroup
,您可以使用方便的方法,例如patchValue
。
推荐阅读
- sql-server - 如何连接表?
- c# - 使用表达式树工厂方法表示 try..catch 没有异常变量或过滤器
- oracle - 物化视图刷新速度快正在让金门作业中止
- .net-core - DotNet CLI 工具失败并显示“未找到匹配命令“dotnet-migrate-2017”的可执行文件
- python - 如何使用 python 将列表理解结果传递到 csv
- docker - 2 个端口用于 1 个 Ingres / services / statefulsets / pods
- javascript - 有谁知道为什么我的所有元素都呈现在一个列中,就好像它是
? - ssh - 如何使编译的 Fortran 代码在不同的计算机上工作?
- python - 如何避免 SMOTE 功能名称不匹配?
- r - R 有人能告诉我这个正则表达式的每一部分是什么吗?