【问题标题】:Form group validation is not working with custom created components表单组验证不适用于自定义创建的组件
【发布时间】:2017-07-18 13:50:04
【问题描述】:

我的组件有一些下拉菜单。选择下拉列表后,将加载一个自定义组件,其中包含一个文本框。 例如,一页上有 3 个控件,一旦用户从下拉列表中选择特定选项,第 4 个文本框就会从单独的组件中加载。

如果第 4 个文本框为空,我如何禁用我的提交按钮。

以下是自定义组件的 HTML 代码

<input class="form-control" type="text" value="" 
     [(ngModel)]="configurationData.sno" name="sno" required>

【问题讨论】:

  • 没有 angularjs 4 这样的东西...

标签: javascript angular


【解决方案1】:

要禁用按钮,您可以使用 Angular 属性绑定并传递一个保存表单有效状态的变量,如下所示:

<button [disabled]="!ValidForm">Click</button>

如果表单有效不要禁用,如果表单无效则向按钮添加禁用属性

或者使用您的输入组件,我们可以为该输入传递 ngModel,如果输入为空,它将返回一个评估为 false 的空字符串,如果有一个值,那么它将评估为 true:

<button [disabled]="!configurationData.sno">Click</button>

我们使用“!”在您的 ngModel 变量之前,因为我们希望变量关闭“false”或空字符串的禁用属性。

【讨论】:

  • 在我的情况下,一个 html 中的所有 3 个控件和按钮和第 4 个文本框(自定义 html)在不同的 html 中。
  • 你的意思是在不同的 html 组件模板中有第 4 个文本框吗?如果是这种情况,那么您可以使用事件发射器来触发表单有效事件并将其传递给提交按钮所在的 html 模板(使用@Input())。看看:angular.io/api/core/EventEmitter
猜你喜欢
  • 2017-09-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
相关资源
最近更新 更多