繁体   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