测试 FormArray

gyc*_*gyc 5 unit-testing typescript karma-jasmine angular-cli angular

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

<div [formGroup]="form">
    <div formArrayName="numbers">
      <input formControlName="countryPrefix">
      <input formControlName="number">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

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

我得到的第一个错误是:

找不到名称为“countryPrefix”的控件

我用以下方法解决了这个问题:

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

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

找不到名称为“numbers”的控件

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

Swo*_*oox 5

尝试这样的事情:

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
})
Run Code Online (Sandbox Code Playgroud)