我们在项目中使用模板驱动的表单,其中一些表单包含嵌套的组件,这些嵌套的组件包含表单元素。我们根本不使用反应性表单,而只使用模板表单,而是使用viewProviders将嵌套组件的表单元素链接到父表单。
@Component({
...
viewProviders: [{provide: ControlContainer, useExisting: NgForm}]
})
这一切都能正常工作/可以完美验证,但是当我尝试对组件进行单元测试时,出现以下错误:
Error:
ngModel cannot be used to register form controls with a parent formGroup directive. Try using
formGroup's partner directive "formControlName" instead. Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
</div>
In your class:
this.myGroup = new FormGroup({
firstName: new FormControl()
});
Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:
Example:
<div [formGroup]="myGroup">
<input formControlName="firstName">
<input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">
</div>
就像我说的,减去单元测试,所有这些都可以执行/验证而没有错误,并且我们当前不使用反应性表单,因此我们不使用formGroup或formControls。我可以在TestBed或间谍程序中做些什么来帮助组件克服此错误?