注意:这是 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 回答
你必须在这里使用
Elvis
operator /ngIf
指令,因为当angular尝试评估页面的绑定时,myForm
对象尚未初始化 . 因此在评估myForm.inputControlX.valid
表达式时,myForm
对象未定义该时间,因此它会抛出错误 .