AngularJS:ngMessages 在 select 中无法使用 ng-options

AngularJS: ngMessages not working with ng-options in select

我看到很少有适用于 ng-repeat 的答案,但使用 ng-options 我遇到了问题。

问题:想要在触摸下拉菜单但未选择任何内容时显示所需的错误消息,我可以使用输入字段执行此操作。

JS 代码

$scope.personMap = [{ name:"Abc", id:"a"},
{ name:"XYZ", id:"b"},
{ name:"FGH", id:"c"},
{ name:"TY", id:"d"}
}]

HTML

<select  name="inpName"  ng-model="person.name" ng-options="i as i.name for i in personMap track by i.id" required>
        <option value=""  selected hidden/> </select>
        <div ng-messages="form.inpName.$error" ng-if="form.inpName.$touched">
          <div ng-message="required">Required field</div>
            </div>
           </div>

引用了这个ng-repeat solution

由于还没有答案,我发布了我发现的问题。

所以当我使用 ng-options 时,它开始在下拉列表中添加一个额外的行,该行可以是空白的,或者你可以给我 select 之类的东西。

我添加了下面的代码来解决这个问题,在 chrome 它没有显示任何空白行。

<option value=""  selected hidden/> </select>

但是当我在 IE 中尝试时它仍然有一个空白行,所以当我 select 下拉列表中的一个值然后单击空白行时会发生什么 ngMessage 工作 fine.So 如果我在 chrome 中再添加一个空白选项,然后尝试先 select 一些内容,然后单击空白,ngMessage 将按预期工作。

问题是 我期待 <select> to work like the input fields and was trying to use the$touched` 状态。但它不是那样工作的,我在想只要我点击下拉菜单 ngMessage 应该激活,如果我将焦点留在其他字段而不 select 从下拉菜单中输入任何内容。不确定我是否可以通过任何其他方式实现它。

已更新HTML

<select  name="inpName"  ng-model="person.name" ng-options="i as i.name for i in personMap track by i.id" required>
        <option value="">Select one </option> </select>
        <div ng-messages="form.inpName.$error" ng-if="form.inpName.$touched">
          <div ng-message="required">Required field</div>
            </div>
           </div>