Javascript ngModel如何在angular中访问错误属性?
我的表格如下:Javascript ngModel如何在angular中访问错误属性?,javascript,angular,ngmodel,Javascript,Angular,Ngmodel,我的表格如下: <form (ngSubmit)="createStock(stockForm)" #stockForm="ngForm"> <div class="stock-name"> <input type="text" placeholder="Stock Name" required name="stockName" #st
<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类中不存在称为“errors”的属性时,它工作正常 我唯一的问题是,当NgModel指令中不存在此类错误属性时,为什么stockName.errors会起作用 存在一个类型为on as inherits的
errors
属性,该属性从中继承,并且该属性具有该属性
这本书写得很好,很容易在中浏览。当我不确定某个类型是否有需要使用的受支持成员时,我经常使用它。我想我找到了问题的答案:
NgModel扩展了NgControl和NgControl扩展了AbstractControlDirective
AbstractControlDirective使错误属性可用于NgModel。
当我们尝试访问ngModel.errors时,它会在内部访问FormControl(由ngModel创建)上定义的属性,如下所示:
简而言之,ngModel.errors是一种语法糖。您需要从模板驱动切换到反应式表单,以获取
FormGroup
上的errors属性。如何做到这一点超出了本论坛的范围。如果您不想切换,只需编写自己的验证并将其附加到(change)
事件。上述代码运行正常。但我不明白当错误属性在ngmodel上根本不存在时,我怎么能访问它。我想我不能很好地解释我的问题。我发布的代码运行良好。我唯一的问题是,当NgModel中不存在这样的errors属性时,为什么stockName.errors可以工作directive@Tarun-好的,这更有意义。谢谢你澄清你的问题。我相应地更新了我的答案,并提供了支持文档链接。
this.control.errors