使用 ng-content 时在表单验证中不考虑输入

Posted

技术标签:

【中文标题】使用 ng-content 时在表单验证中不考虑输入【英文标题】:inputs are not considered in form validation when using ng-content 【发布时间】:2017-04-28 11:14:20 【问题描述】:

给定以下组件(使用选择器 my-template):

<form #theForm="ngForm">
    <ng-content></ng-content>
</form>

并像这样使用它:

<my-template>
    <input type="text" required name="firstName" [(ngModel)]="firstName"/>
</my-template>

表单始终有效 - 即使输入无效。如何使这项工作在输入无效时表单无效?

现场演示: https://plnkr.co/edit/lWUe6oeBk6ccsE2JxNKb?p=preview

【问题讨论】:

【参考方案1】:

仅出于测试目的,尝试将您的表单模板更改为:

<form #theForm="ngForm">
    <input type="text" required name="lastName" [(ngModel)]="lastName"/>
    <ng-content></ng-content>
</form>

您会看到,当lastName 无效时,该表单将无效。这意味着FormComponent 在呈现ng-content 之前处理自己的html 元素字段。 IE。你必须在模板渲染后更新FormControls。

请阅读本主题Dynamic Form了解更多信息

【讨论】:

以上是关于使用 ng-content 时在表单验证中不考虑输入的主要内容,如果未能解决你的问题,请参考以下文章

表单验证在引导程序中不起作用

表单验证在 XAmpp 中不起作用

Angular 10 ng-content 投影导致表格冻结

.ajaxform 在验证 submitHandler 中不起作用?

Java表单中关于JavaScript的非空必输验证,你的程序和大牛有多少差距╮( ̄▽ ̄")╭

表单验证在我的 CI 项目中不起作用(已修复,代码已更新)