带有primeng的Angular2复选框失败

Geo*_*off 2 checkbox typescript angular

我正在使用 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);
   }
Run Code Online (Sandbox Code Playgroud)

在 html 模板中,我使用了这样的 Primeng 复选框

  <p-checkbox formControlName="needs_reset" label="User has to set password" 
   (onChange)="Onpwdchange()"></p-checkbox>

  <p-checkbox formControlName="sendcred" name="send cred"  label="Send user
 login credentials " (onChange)="Oncredchange()"></p-checkbox>
Run Code Online (Sandbox Code Playgroud)

方法onpwdchange()和 oncredchange() 只有一个console.log("clicked")

每当我检查复选框时都会出现错误

this.model.push is not a function  //i havent implemented push method anywhere
Run Code Online (Sandbox Code Playgroud)

我已经检查了这个 primeng2 问题,但他们建议使用angular2 cli 中没有的disableDeprecatedForms()provideForms()

我如何解决这个问题

Ank*_*nka 5

根据 PrimeNG 文档

https://www.primefaces.org/primeng/#/checkbox

formControlName 不适用于primeNG 的复选框。

所以你需要这样做

<p-checkbox value="xyz" [formControl]="myFormGroup.controls['name']"></p-checkbox>
Run Code Online (Sandbox Code Playgroud)

如果你想要二进制值真/假

<p-checkbox binary="true" [formControl]="myFormGroup.controls['name']"></p-checkbox>
Run Code Online (Sandbox Code Playgroud)