角度-如何测试使用ViewProviders的模板驱动的表单组件?

时间:2019-11-22 21:28:30

标签: angular

我们在项目中使用模板驱动的表单,其中一些表单包含嵌套的组件,这些嵌套的组件包含表单元素。我们根本不使用反应性表单,而只使用模板表单,而是使用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或间谍程序中做些什么来帮助组件克服此错误?

0 个答案:

没有答案
相关问题