簡體   English   中英

當 FormGroup 傳遞給子組件時,FormControlName 必須與父 FormGroup 指令一起使用

[英]FormControlName must be used with a parent FormGroup directive when FormGroup is passed to child component

父組件

  <form [formGroup]="User">
    
    <app-radioButton [group]="user"></app-radiobuton>
    
    </form>

在無線電組件 html

<mat-radio-button  [formControlName]="name" > <mat-radio-button>

無線電組件的 in.ts

export class RadioComponent{
@Input() group: FormGroup;
}

如上給出錯誤。 不知道我在做什么錯。

之所以失敗,是因為 Angular 正在等待任何父子元素上的 FormGroupDirective。 所以:

在子組件中請聲明:

@Component({
  selector: 'child',
  templateUrl: './child.component.html',
  viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }]
})

或者

您可以在子組件中使用 formControl:

<mat-radio-button  [formControl]="name" > <mat-radio-button>

在您的代碼中有[formGroup]="User"並傳遞給子組件[group]="user" 為什么提供不同的數據: Useruser

如果您想按照您的方式使用您的FormGroup ,只需將您的表單組包裝為子組件中的子控件:

<ng-container [formGroup]="group">
  <mat-radio-button [formControlName]="name"><mat-radio-button>
</ng-container>

另一種方法是制作更合適的組件結構:

<form [formGroup]="User">
  <app-radioButton [formControlName]="name"></app-radiobuton>
</form>

並在子組件中注入控制。 您可以在此處查看如何操作

背后的主要原因是您使用的是表單標簽之外的表單控制字段

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM