4

我正在使用md-autocompleteAngular Material:这里

下拉菜单的宽度似乎与输入字段的宽度一致。如果项目的文本太长,则存在ellipsis.

但是,我想显示一个项目的全文,同时保持输入字段的宽度相对较短。也就是说,下拉菜单的宽度应该随着它的内容而扩大。

我尝试检查md-autocomplete's 元素的样式,但找不到任何可以解决问题的样式。任何想法?

编辑:

这是我最终拥有的风格:

.md-autocomplete-suggestions-container{
    overflow-y:scroll
}

.md-autocomplete-suggestions-container .md-virtual-repeat-scroller{
    position:static
}

.md-autocomplete-suggestions-container .md-virtual-repeat-sizer{
    height:0 !important
}

.md-autocomplete-suggestions-container .md-virtual-repeat-offsetter{
    position:static
}

然而还有一个问题。overflow-y:scroll即使不需要,也总是显示垂直滚动条。如果我将其更改为overflow-y:auto,将创建垂直滚动条ellipsis。我该如何解决这个问题?

4

4 回答 4

8

对于由于面板宽度仅与字段一样宽而仍然面临自动完成值被裁剪问题的任何人,好消息是它现在已被修复,哇哦!

Angular Material Release 6.4.0 (2018-07-16) 引入了以下功能,

  • 自动完成:允许面板的宽度值为 auto ( #11879 ) ( 8a5713e )

所以现在可以只添加属性 panelWidth 与值 auto 并且面板将增长以适应值。

<mat-autocomplete panelWidth="auto">
      <mat-option value="myValue">Now an option with a long label will still be readable<option>
</mat-autocomplete>
于 2018-07-18T06:49:13.590 回答
3

您需要在md-autocomplete元素上设置类,以便可以在 css 中定位它。看这个例子

  <md-autocomplete class="autocompletable"  
              md-min-length="0" 
              ... 
              placeholder="US State?" 
              md-menu-class="autocompletable-contents">
              <md-item-template>
                 <table>
                    <tr>
                        <td><span md-highlight-text="ctrl.searchText" 
                            md-highlight-flags="^i">{{item.ok}}</span>
                        </td><td>Foo</td>
                    </tr>
                 </table>
              </md-item-template>
              <md-not-found>
                 No states matching "{{ctrl.searchText}}" were found.
                 <a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
              </md-not-found>
           </md-autocomplete>

然后在css中你需要这样做

  md-autocomplete.autocompletable{ width: 200px; }
  .autocompletable-contents{ }

编辑:用材料 1.0.9 测试

于 2016-07-19T10:49:13.327 回答
3

您可以使用 css 来设置样式md-virtual-repeat-container

但是,这将为您网站上可能拥有的每个实例设置样式(即和)。md-virtual-repeat-containermd-autocompletemd-virtual-repeat

不幸的是,目前没有调整单个 md-autocomplete 下拉列表的选项。我创建了一张票和拉取请求,希望能解决这个问题。祈祷这将包含在 Angular Material 的未来版本之一中。

祝你好运!

于 2016-06-02T06:19:33.850 回答
1

我很晚才知道,但在材料 1.1.9 中,您可以md-menu-classmd-autocomplete指令上添加一个属性。

您添加的类将报告.md-autocomplete-suggestions虚拟重复中的元素。因此,您只能为此自动完成自定义 css。

例子:

 <md-autocomplete ...  md-menu-class="search-field-autocomplete">

会产生

<ul class="md-autocomplete-suggestions search-field-autocomplete" ... >              
    <li md-virtual-repeat="item in $mdAutocompleteCtrl.matches" ...

因此您可以使用 css 进行自定义,例如:

.md-autocomplete-suggestions.search-field-autocomplete {
  li {
    color: red;
  }
}
于 2018-05-17T12:50:19.610 回答