测试 FormArray [英] Testing FormArray

查看:22
本文介绍了测试 FormArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 PhoneNumbersFormComponent,其模板如下所示:

<div formArrayName="数字"><input formControlName="countryPrefix"><input formControlName="number">

我想通过angular-cli的ng g component xxx

创建的默认测试

我得到的第一个错误是:

<块引用>

找不到名为countryPrefix"的控件

我解决的问题:

 beforeEach(() => {夹具 = TestBed.createComponent(PhoneNumbersFormComponent);组件 = 夹具.componentInstance;component.phoneNumbers = [];component.form = new FormGroup({countryPrefix: 新的 FormControl(),编号:new FormControl()});夹具.detectChanges();});

现在最后剩下的错误是:

<块引用>

找不到名称为数字"的控件

而且我不知道如何测试 formArrayName="numbers"

解决方案

试试这个:

let 数组:FormGroup[] = [];array.push(new FormGroup({countryPrefix: 新的 FormControl(),编号:new FormControl()}));让 formArray = new FormArray(array);component.form = new FormGroup({numbers: formArray//或数组不完全确定})

I have a PhoneNumbersFormComponent whose template looks like :

<div [formGroup]="form">
    <div formArrayName="numbers">
      <input formControlName="countryPrefix">
      <input formControlName="number">
    </div>
</div>

I want to pass the default test created by angular-cli's ng g component xxx

The first error I got was:

Cannot find control with name 'countryPrefix'

Which I solved with:

  beforeEach(() => {
    fixture = TestBed.createComponent(PhoneNumbersFormComponent);
    component = fixture.componentInstance;
    component.phoneNumbers = [];
    component.form = new FormGroup({
      countryPrefix: new FormControl(),
      number: new FormControl()
    });
    fixture.detectChanges();
  });

Now the last remaining error is:

Cannot find control with name 'numbers'

And I have no idea how to test formArrayName="numbers"

解决方案

Try something like this:

let array: FormGroup[] = [];
array.push(new FormGroup({
      countryPrefix: new FormControl(),
      number: new FormControl()
}));
let formArray = new FormArray(array);
component.form = new FormGroup({
       numbers: formArray // or array not totally sure
})

这篇关于测试 FormArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆