javascript - AngularJS ng-message 指令始终显示消息

标签 javascript angularjs ng-messages

我正在尝试将 View 中的选择字段设置为必需。所以我的 view.html 中有以下标签

<form name="homeForm">
  <div class="form-group col-md-6 md-padding">
    <div>
        <label style="font-size: medium">Laboratory Name</label>
        <select name="labName" class="form-control" ng-model="request.labName" required>
            <option ng-repeat="lab in labList" value="{{lab.id}}">{{lab.value}}</option>
        </select>
        <div style="color:maroon" ng-messages="homeForm.labName.$error"
             ng-if="homeForm.requestTypeName.$touched">
            <div ng-message="required">This field is required</div>
        </div>
    </div>

我希望仅当没有选择数据时才会显示此字段为必填。但无论该字段是否有数据 This field is required 都会显示如下 enter image description here

这里有什么我想念的吗

最佳答案

您需要在输入和 ng-message 中设置相同的输入名称。这样做,你甚至不需要 ng-if。例如:

<form name="form">
  <input name="fullname" type="text" ng-model="fullname" required/>
  <div ng-messages="form.$submitted && form.fullname.$error">
    <p ng-message="required" class="help-block">This field is required</p>
  </div>
</form>

在本例中,我使用 form.$subscribed。您可以删除它,将其替换为触摸/脏或其他。原理是一样的。

关于javascript - AngularJS ng-message 指令始终显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52430834/

相关文章:

javascript - 如何在没有 jquery 的情况下向此代码添加淡入和淡出过渡

javascript - AngularJS 多选复选框下拉列表与选定的复选框

angularjs:ng-message 总是显示

javascript - Angular ui-grid 3.0获取选定的行

javascript - SCEditor BBcode 到 HTML 解析

http - 带有 $http 调用的 AngularJS 工厂在响应准备就绪时我应该关心吗?

javascript - 如何在 AngularJS 中显示和隐藏代码块

angularjs - ngMessages 在指令模板中不起作用

javascript - Openlayers:GeoJSON 和坐标