TypeError:对象不支持角度6.1上的属性或方法“ registerOnChange”

时间:2019-11-12 06:49:30

标签: angular typescript

我有一个kendo-multiselect控件,它可以作为表单上的单独控件正常工作。一旦进入响应式表单(通过控件的循环),Kendo_multiselect就会通过以下错误提示:对象不支持属性或方法“ registerOnChange”

'mycomponent.html'

<div class="card-body bg-light col-lg-10">
  <div formArrayName="significantAdults" *ngFor="let sigAdult of cdnForm.get('significantAdults').controls;  let j = index">
    <hr *ngIf="j>0" />     <!--add line to form-->
    <div [formGroupName]="j">
      <div class="form-group" >
        <label class="font-weight-bold col-sm-6 control-label" [attr.for]="'significantAdultDistricts'+j">District</label>
        <kendo-multiselect [data]="listDistrict" [textField]="'districtName'" [valueField]="'id'"
                           formControlName="significantAdultDistricts" class="form-control"
                           ></kendo-multiselect>

      </div>
    </div>
  </div>

mycomponent.ts

这是代码,当我设置Formgroup时,如果我删除了ificateAdultDistricts,并且所有控件仍然正常工作,它将引发onregisterchange错误。

const significantAdults = this.createsignificantAdultsForm(result.peopleCDNs);
 this.cdnForm.setControl('significantAdults', significantAdults);



createsignificantAdultsForm(significantAdults: any[]): FormArray {
    const formArray = new FormArray([]);
      significantAdults.forEach(sig => {
      if (sig.person.familyRole == "SignificantAdult") {
        formArray.push(this.fb.group({
          significantAdultId: sig.person.id,
          significantAdultLastName: sig.person.lastName,
          significantAdultFirstName: sig.person.firstName,
          significantAdultDateOfBirth: new Date(sig.person.dateOfBirth + 'Z'),
          significantAdultIDNumber: sig.person.idNumber,
          significantAdultDistricts: this.setDistricts(sig.person),
          //childDistricts: this.setDistricts(sig.person),
          significantAdultAlias: sig.person.alias,
          significantAdultAddress: sig.person.address,          
        }));
      }
    });
    return formArray
  }

  setDistricts(x) {
    let arr = new FormArray([])
    x.personDistricts.forEach(y => {
      arr.push(this.fb.group({
        id: y.district.id,
        districtName: y.district.districtName,
        sortOrder: y.district.sortOrder,
      }))
    })
    return arr;
  }

0 个答案:

没有答案