如何使角2形式参见注入的形式控件



我正在动态地注入一个组件(使用@viewchild and insert())形式控件中的组件将其包裹在形式标签中(以便我可以拥有许多不同的形式模板,并具有相同的形式处理)。

这一切都很好,但是现在,当我检查表单时。valid始终有效,因为显然,它看不到动态注射的表单控件。

我可以以某种方式触发ngform指令的在表单上的,以便它知道注入其他表单控件吗?

注意:我现在确实意识到,解决此问题的更好解决方案可能是使用模型驱动的表单,但是现在太短了,无法重做整个过程。

父模板:

<form #htmlFormElement="ngForm" novalidate>
    <div #dynamicComponentContainer></div>
    <!-- more buttons and shared form controls here -->
</form>

儿童模板例如。:

<textarea name="comments" [(ngModel)]="formData.comments"></textarea>

您可以在子组件中设置ViewProviders将现有NGFORM用作ControlContainer。

这应该自动处理子组件中的形式控制,就像它们是父部件的一部分一样。

例如:

@Component({
    selector: 'child-with-form-controls',
    templateUrl: './child-with-form-controls.component.html',
    viewProviders: [{ provide: ControlContainer, useExisting: NgForm}]
})
export class ChildWithFormControlsComponent {
    ...
}

最新更新