在silentsod answer的帮助下,我写了一个解决方案来获取值而不是我的formBuilder中的状态。
我使用一种方法在Array格式中添加或删除值。这可能是一个糟糕的approch,但它的工作原理!
组件.html  
<div *ngFor="let choice of checks; let i=index" class="col-md-2">
  <label>
    <input type="checkbox" [value]="choice.value" (change)="onCheckChange($event)">
    {{choice.description}}
  </label>
</div>
component.ts
// For example, an array of choices
public checks: Array<ChoiceClass> = [
  {description: 'descr1', value: 'value1'},
  {description: "descr2", value: 'value2'},
  {description: "descr3", value: 'value3'}
];
initModelForm(): FormGroup{
  return this._fb.group({
    otherControls: [''],
    // The formArray, empty 
    myChoices: new FormArray([]),
  }
}
onCheckChange(event) {
  const formArray: FormArray = this.myForm.get('myChoices') as FormArray;
  /* Selected */
  if(event.target.checked){
    // Add a new control in the arrayForm
    formArray.push(new FormControl(event.target.value));
  }
  /* unselected */
  else{
    // find the unselected element
    let i: number = 0;
    formArray.controls.forEach((ctrl: FormControl) => {
      if(ctrl.value == event.target.value) {
        // Remove the unselected element from the arrayForm
        formArray.removeAt(i);
        return;
      }
      i++;
    });
  }
}
例如,当我提交表单时,我的模型如下所示:
  otherControls : "foo",
  myChoices : ['value1', 'value2']
只缺少一件事,即如果您的模型已经检查了值,则用于填充表单Array的函数。