首页 文章

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

提问于
浏览
2

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

这是我的代码(Angular 2 rc2 app,已弃用表格):

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

inputControlX is validated correctly (ng-invalid class被添加到输入中) . 但是,当我添加

{{inputControlX.valid}}

要么

{{myForm.inputControlX.valid}}

要么

{{ngForm.inputControlX.valid}}

我一直收到错误: can't read property valid of undefined . 另一方面,添加(如this answered question#inputControlX="ngForm" ,使其工作(即使没有ngControl)

Why is this necessary?

1 回答

  • 1

    你必须在这里使用 Elvis operator / ngIf 指令,因为当angular尝试评估页面的绑定时, myForm 对象尚未初始化 . 因此在评估 myForm.inputControlX.valid 表达式时, myForm 对象未定义该时间,因此它会抛出错误 .

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

相关问题