control.registerOnChange 不是函数

kyw*_*kyw 6 angular

我正在构建一个自定义地址组件。我在一个组件中使用它:

消费者.component.html:

<form [formGroup]="form">
  <nt-address [parent]="form" fG="addrGrp" formControlName="addrGrp"></nt-address>
  {{form.value | json}}
</form>
Run Code Online (Sandbox Code Playgroud)

消费者.component.ts

data = {
 addr1: 'Sample Address Line 1'
};
ngOnInit() {
  this.form = this.fb.group({
    addrGrp: this.fb.group(this.data)
  })
}
Run Code Online (Sandbox Code Playgroud)

nt-address.component.html:

<div [formGroup]="parent">
   <div [formGroupName]="fG">
     <md-input-container>
       <input mdInput type="text" formControlName="addr1" placeholder="Address Line 1">
     </md-input-container>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

nt-address.component.ts:

export class AddressComponent extends ValueAccessorBase<any> {
   @Input() parent: FormGroup;
   @Input() fG: FormGroup;

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

类型错误:control.registerOnChange 不是函数

ImF*_*had 0

我在一个ionic-3项目中遇到了这个问题,我发现我在模板中多次使用了一个表单控件名称。喜欢

   <ion-item>
      <ion-label stacked>Category</ion-label>
      <ion-input placeholder="Enter category" formControlName="category" type="text"></ion-input>
    </ion-item>

    <!-- Sub Category --`
    <ion-item>
      <ion-label stacked>Sub Category</ion-label>
      <ion-input placeholder="Enter sub category" formControlName="category" type="text"></ion-input>
    </ion-item>
Run Code Online (Sandbox Code Playgroud)


将第二个离子项中的 formControlName更改为子类别 后,问题得到解决。