ngModel 如何访问角度中的错误属性?



我有以下角度形式:

<form (ngSubmit)="createStock(stockForm)" #stockForm="ngForm">    
<div class="stock-name">
<input type="text"
placeholder="Stock Name"
required
name="stockName"
#stockName="ngModel"                                   
[(ngModel)]="stock.name">
</div>
<div *ngIf="stockName.errors && stockName.errors.required">     
Stock Name is Mandatory
</div>

正如你所知道的,我正在创建一个模板引用变量(stockName)并为其分配ngModel。稍后我使用该模板引用变量来检查错误。上面的代码工作正常,但我无法理解为什么当 NgModel 类中不存在称为"错误"的属性时它工作正常。

我唯一的问题是,当 NgModel 指令中不存在此类错误属性时,为什么 stockName.errors 可以正常工作

NgModel上有一个类型ValidationErrorserrors属性NgModel继承自从AbstractControlDirective继承的NgControl并且具有该属性。

角度 API 文档编写得很好,易于浏览。当我不确定某个类型是否具有我需要使用的支持成员时,我经常发现自己使用它。

我想我找到了问题的答案:
NgModel 扩展了 NgControl,NgControl扩展了 AbstractControlDirective
AbstractControlDirective使错误属性可供NgModel使用。
当我们尝试访问ngModel.errors时,它会在内部访问FormControl(由ngmodel创建)上定义的属性,如下所示:

this.control.errors 

简而言之,ngModel.errors是一种语法糖。

相关内容

最新更新