嘿,我想从一个很大的表单组中的每个FormControl创建一个子组件内容。
因为我不能仅仅通过formcontrol,因为他需要一个formGroup。
我尝试过的想法和方法是将我的formgroup注入child并还传递一个json参数对象以配置child formcontrol(名称,类型的输入,验证器的类型...)。
但是每次将formGroup传递给孩子时,会使我的渲染器花太多时间来渲染。
但我认为这不是练习的好方法。
在父对象中
<ctrl
[config]="'name'"
[form]="form.get('site')"
[ctrlName]="'ORDER_FORM_NAME'"
[ctrlError]="'ORDER_FORM_NAME_ERROR'"
></ctrl>
子组件html
<form [formGroup]="form">
<div>
<label>{{ctrlName}}</label>
<div>
<input formControlName="{{config}}" placeholder="{{ctrlName}}">
<div *ngIf="form.get(config).hasError('required')">
<span>{{ctrlError}}</span>
</div>
</div>
</div>
</form>
我在stackoverflow上看到了一些用注射器或viewContainerRef创建通用组件的情况,这并不是我真正想要的。
如果有人可以给我传递链接或简要地解释该过程,可能会很有帮助。
答案 0 :(得分:0)
您可以尝试将viewProviders
添加到@Component
,并提供一个包含表格的服务,以将其注入所有子组件中:
@Component({
selector: '...',
templateUrl: '...',
styleUrls: ['...'],
viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }],
})