angular - 如何在 Angular 2 中获得单一表单字段的有效性?

标签 angular angular2-forms

注意:这与我在 https://stackoverflow.com/questions/38356330/how-to-use-pattern-validation-in-angular-2-based-on-ngmodel-template-model-driv 的其他问题是同一个问题。

这是我的代码(带有已弃用表单的 Angular 2 rc2 应用程序):

<form #myForm="ngForm">
    <input id="inputControlX" ngControl="inputControlX" pattern="abcd">
    {{inputControlX.valid}}
</form>

inputControlX 已正确验证(ng-invalid 类已添加到输入中)。 但是当我添加

 {{inputControlX.valid}}

{{myForm.inputControlX.valid}}

{{ngForm.inputControlX.valid}}

我不断收到错误:无法读取未定义的有效属性。 另一方面,添加(如 this answered question )#inputControlX="ngForm",使其工作(即使没有 ngControl)

为什么这是必要的?

最佳答案

您必须在此处使用 Elvis 运算符/ngIf 指令,因为当 Angular 尝试评估页面的绑定(bind)时,myForm 对象会避难。尚未初始化。因此,在计算 myForm.inputControlX.valid 表达式时,当时未定义 myForm 对象,因此会引发错误。

{{myForm?.inputControlX?.valid}}
//OR    
<span *ngIf="myForm"> {{myForm.inputControlX.valid}}</span>

关于angular - 如何在 Angular 2 中获得单一表单字段的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356806/

相关文章:

javascript - Angular 2/4 @Input 只移动内在函数——不移动列表或对象

angular - 将自定义表单控件连接到 Angular 2 中的父表单验证

Angular 2 Reactive Form Error - TypeError : this. form.get 不是一个函数

angular - 将复选框绑定(bind)到值而不是使用 react 形式的 true/false

angular - 我如何将一个类导出到模块并在带 Angular typescript 中将其导入另一个模块

angular - 构建 Angular 库时包含 Assets

子路由上路由器导出内的 Angular 组件不会填充可用空间

javascript - 如何在 Angular2 中禁用动态表单

angular - Async.js 和 Angular 2

angular - 在 angular2 中,是否有可能获得可观察对象的订阅者数量?