使用通用formControle创建子组件

时间:2019-05-23 11:19:34

标签: angular angular-reactive-forms angular-components

嘿,我想从一个很大的表单组中的每个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创建通用组件的情况,这并不是我真正想要的。

如果有人可以给我传递链接或简要地解释该过程,可能会很有帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试将viewProviders添加到@Component,并提供一个包含表格的服务,以将其注入所有子组件中:

@Component({
  selector: '...',
  templateUrl: '...',
  styleUrls: ['...'],
  viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }],
})