【发布时间】:2020-09-14 06:31:43
【问题描述】:
Angular 9:在 html 内容中使用了没有表单标签的 formarray,但现在需要向 html 组件添加验证和添加表单标签,现在代码不起作用!
使用formarray在按钮点击时动态生成一行控件(textbox和textarea);html组件没有form标签,这是通过首先创建一个formarray来实现的:
requirement=new FormArray([]);
并在 html 组件中添加以下内容:
<tr let req of requirement.controls let i=index>
<td>
<input type="number" name="Req#" [(NgModel)]="reqno"/>
</td>
<td>
<textarea type="text" name="Req" [(NgModel)]="req"></textarea>
</td>
:
:
:
</tr>
在按钮单击时应用以下代码:
this.requirement.push(new FormControl(''));
这有助于生成动态控件,但无法执行验证,因此将表单标签添加到 html 组件并添加 formControlName 而不是 NgModel 和上面的打字稿代码: 声明formarray如下:
公开要求:FormArray;
并在 ngOnInit() 上进行相同的初始化:
this.requirement=new FormArray([
new FormGroup({
reqno:new FormControl('');
req:new FormControl('');
})
]);
更改后,Ngif 和 NgFor 不起作用。谁能帮忙。
【问题讨论】:
-
你得到什么错误信息?
-
@lynx 242 : 错误:formControlName 必须与 FormGroup 指令一起使用。您需要添加一个 FormGroup 指令并将现有的 FormGroup 实例传递给它 - 这是从控制台获得的。跨度>
标签: html angular typescript