首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试FormArray

测试FormArray
EN

Stack Overflow用户
提问于 2017-10-13 06:22:54
回答 2查看 7.5K关注 0票数 5

我有一个PhoneNumbersFormComponent,它的模板看起来像:

代码语言:javascript
复制
<div [formGroup]="form">
    <div formArrayName="numbers">
      <input formControlName="countryPrefix">
      <input formControlName="number">
    </div>
</div>

我想通过角cli的ng g component xxx创建的默认测试

我得到的第一个错误是:

找不到名为“countryPrefix”的控件

我用的是:

代码语言:javascript
复制
  beforeEach(() => {
    fixture = TestBed.createComponent(PhoneNumbersFormComponent);
    component = fixture.componentInstance;
    component.phoneNumbers = [];
    component.form = new FormGroup({
      countryPrefix: new FormControl(),
      number: new FormControl()
    });
    fixture.detectChanges();
  });

现在剩下的最后一个错误是:

找不到名为“数字”的控件

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-13 07:04:32

试着做这样的事情:

代码语言:javascript
复制
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
})
票数 5
EN

Stack Overflow用户

发布于 2019-10-08 18:37:36

或者,您可以在组件中构建一个FormArray,并为表单数组提供一个getter。

代码语言:javascript
复制
ngOnInit() { this.formArrayOfPhoneNumbers = this.phoneNumbers.map((phone) => 
    { return new FormGroup({ countryPrefix: [phone.countryPrefix], number: [phone.number] })
}

get numbers: FormArray { return this.formArrayOfPhoneNumbers as FormArray }

我对语法不太确定,但重点是formArrayName指令将调用getter,您可以确保返回一个FormArray对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46723685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档