带预充的Angular2复选框失败

带预充的Angular2复选框失败,angular,typescript,checkbox,Angular,Typescript,Checkbox,我正在使用angular2 cli,这是我设置表单的方式 在组件中 export class UsersAddComponent implements OnInit { ngOnInit() { this.userForm = this._formBuilder.group({ role: ['', [Validators.required]], others: this._formBuilder.array([]) //for adding multipe

我正在使用angular2 cli,这是我设置表单的方式

在组件中

export class UsersAddComponent implements OnInit {

 ngOnInit() {
    this.userForm = this._formBuilder.group({
      role: ['', [Validators.required]],
      others: this._formBuilder.array([])  //for adding multipe form inputs
    });

   this.addNewUser();

  }

  initAddress() {
     return this._formBuilder.group({     
       sendcred: [''],  //checkbox needs no validation in my logic
        needs_reset: [''], // ''
        .....other fields here
    });
 }


  addNewUser() {  //this is called whenever add new user button is clicked
     const control = <FormArray>this.userForm.controls['others'];
     const addrCtrl = this.initAddress();
     control.push(addrCtrl);
   }
我检查过了,但他们建议使用angular2 cli中不可用的
disableDeprecatedForms()
ProviderForms()

我如何解决这个问题

  • 按如下方式初始化表单值
  • file.ts

    this.infraestructuraServiciosForm = this.fb.group({
         ....
         complementarios : new FormControl('', []),
         ......
    });
    
  • 以下行避免了错误:

    this.infraestructuraServiciosForm.controls['complementarios'].setValue([]);
    
  • file.html

    <p-fieldset legend="Complementarios">
                <body>
                    <div class="ui-g ui-fluid">
                         <div class="ui-g-12">
                            <div class="ui-g-3">
                                <p-checkbox name="cpl" value="acerasBordillos" label="Aceras y Bordillos" formControlName="complementarios" (onChange)="haCambiadoAcerasBordillos(checked)"></p-checkbox>
                            </div>
                            <div class="ui-g-3">
                                <p-checkbox name="cpl" value="soloBordillos" label="Solo Bordillos" formControlName="complementarios" (onChange)="haCambiadoSoloBordillos(checked)"></p-checkbox>         
                            </div>
                            <div class="ui-g-3">
                                <p-checkbox name="cpl" value="telefonoFijo" label="Red de Teléfono Fijo" formControlName="complementarios"></p-checkbox>      
                            </div>          
                            <div class="ui-g-3">
                                <p-checkbox name="cpl" value="alumbradoPublico" label="Alumbrado Público" formControlName="complementarios"></p-checkbox>                              
                            </div>
                        </div>                                     
                    </div>
                </body>
            </p-fieldset>
    

    根据底漆文件

    formControlName不适用于Priming的复选框

    所以你需要这样做

    <p-checkbox value="xyz" [formControl]="myFormGroup.controls['name']"></p-checkbox>
    
    
    
    如果需要二进制值true/false

    <p-checkbox binary="true" [formControl]="myFormGroup.controls['name']"></p-checkbox>
    
    
    
    禁用不推荐的表单
    提供变形
    都是古老的历史(期末前),所以我的问题中有没有解决办法?我不知道。从几个月以来就没有做过太多的表单。好的,感谢您的持续支持PrimeAfaces!=我期待了两天发送“真实”值。“二进制”属性解决了这个问题。非常感谢。一旦我设置了
    binary=true
    formControlName=…部分与Priming 9.0.0一起工作
    <p-checkbox value="xyz" [formControl]="myFormGroup.controls['name']"></p-checkbox>
    
    <p-checkbox binary="true" [formControl]="myFormGroup.controls['name']"></p-checkbox>