Angular模板驱动表单中lname.errors.required语法含义咨询
Angular模板驱动表单中
lname.errors.required的含义解析 先梳理上下文:你在输入框上定义的#lname="ngModel"是模板引用变量,它把当前输入框对应的NgModel实例绑定到lname变量上,让你能在模板里直接访问该表单控件的状态、值和验证结果。
接下来拆解lname.errors.required的各个部分:
lname:就是上面提到的模板引用变量,指向当前输入框的NgModel实例。errors:NgModel的内置属性,仅当控件验证失败时才会存在(是一个对象),里面包含所有未通过的验证规则;如果控件所有验证都通过,errors会是null。required:和你给输入框添加的required属性对应,是Angular内置必填验证器的标识。当用户未填写这个必填字段时,errors对象里会生成required: true的键值对,此时lname.errors.required会返回true。
你写的这段代码:
<span *ngIf="lname.errors.required"> Last name is required. </span>
作用很明确:在外层lname.touched && !lname.valid(输入框已被触摸且验证不通过)的判断前提下,若验证失败的原因是违反了必填规则,就显示"Last name is required."这个错误提示。
补充个小细节:虽然当前写法能正常运行,但更严谨的写法可以用lname.hasError('required'),它会自动处理errors为null的情况,避免潜在的空值访问报错。
内容的提问来源于stack exchange,提问作者Abhishek Choubey
相关产品推荐
相关产品推荐

