2017-10-13 24 views
3

我有一个PhoneNumbersFormComponent其模板的样子:测试FormArray

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

我想通过由角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(); 
    }); 

现在仅存的错误是:

无法找到名为“数字”

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

回答

2

尝试这样:

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 
}) 
+0

很好,这个工程。 – gyc

+0

非常欢迎 – Swoox