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扩展了NgControlNgControl扩展了AbstractControlDirective
AbstractControlDirective使错误属性可用于NgModel。
当我们尝试访问ngModel.errors时,它会在内部访问FormControl(由ngModel创建)上定义的属性,如下所示:


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

您需要从模板驱动切换到反应式表单,以获取
FormGroup
上的errors属性。如何做到这一点超出了本论坛的范围。如果您不想切换,只需编写自己的验证并将其附加到
(change)
事件。上述代码运行正常。但我不明白当错误属性在ngmodel上根本不存在时,我怎么能访问它。我想我不能很好地解释我的问题。我发布的代码运行良好。我唯一的问题是,当NgModel中不存在这样的errors属性时,为什么stockName.errors可以工作directive@Tarun-好的,这更有意义。谢谢你澄清你的问题。我相应地更新了我的答案,并提供了支持文档链接。
this.control.errors