md-autocomplete с ошибками работает только в первый раз

В демонстрации материала angular, когда я тестирую пример с плавающей меткой автозаполнения, он работает неправильно с ошибками

https://material.angularjs.org/latest/demo/autocomplete

  1. Нажмите «Избранное состояние» и нажмите «Выйти»> отображается сообщение об ошибке: OK
  2. Обновите страницу, нажмите «Избранное состояние», введите «xxx» и щелкните > отображается сообщение об ошибке: OK
  3. Теперь не обновляйте и не сбрасывайте поле> нет сообщения об ошибке, но поле красное: у меня не работает, я ожидал обязательного сообщения об ошибке
  4. введите «xxx» еще раз, без сообщения об ошибке

У вас есть решение, чтобы сообщения об ошибках работали правильно?

пример плункера: https://plnkr.co/edit/AmTLs4mbRsxgSNjEKvhn код поля md-autaucomplete

<md-autocomplete flex required
        md-input-name="autocompleteField"
        md-input-minlength="2"
        md-input-maxlength="18"
        md-no-cache="ctrl.noCache"
        md-selected-item="ctrl.selectedItem"
        md-search-text="ctrl.searchText"
        md-items="item in ctrl.querySearch(ctrl.searchText)"
        md-item-text="item.display"
        md-require-match
        md-floating-label="Favorite state">
      <md-item-template>
        <span md-highlight-text="ctrl.searchText">{{item.display}}</span>
      </md-item-template>
      <div ng-messages="searchForm.autocompleteField.$error" ng-if="searchForm.autocompleteField.$touched">
        <div ng-message="required">You <b>must</b> have a favorite state.</div>
        <div ng-message="md-require-match">Please select an existing state.</div>
        <div ng-message="minlength">Your entry is not long enough.</div>
        <div ng-message="maxlength">Your entry is too long.</div>
      </div>
    </md-autocomplete>

Благодарность


person pop_up    schedule 07.12.2016    source источник
comment
воспроизвести проблему на plunker   -  person Sajeetharan    schedule 07.12.2016
comment
Спасибо. Я буду использовать это исправление   -  person pop_up    schedule 20.12.2016


Ответы (1)


Кажется, это ошибка.

По крайней мере, есть несколько связанных ошибок, например: https://github.com/angular/material/issues/6767

Самый простой обходной путь, который я нашел для случая в демонстрации, — это либо заменить ng-if="searchForm.autocompleteField.$touched" на ng-show, либо полностью удалить его.

person tasseKATT    schedule 15.12.2016