我应该如何在角度材料中实现多项选择选项?

Posted

技术标签:

【中文标题】我应该如何在角度材料中实现多项选择选项?【英文标题】:How am I supposed to implement multiple select option in angular-material? 【发布时间】:2015-04-23 17:22:12 【问题描述】:

我已经检查了文档和演示,但是唉!!我还没有找到任何关于使用 angular-material 实现多选选项(如 select 2)的参考。 谁能告诉我如何使它工作?

【问题讨论】:

稍微补充一下问题:从 0.8.3 开始,文档不提供“多个”的演示。使用 multiple 属性作为布尔选项失败:它似乎是基于存在的(这是纯粹的邪恶,我必须补充)。 【参考方案1】:

我使用以下内容允许我使用 ng-repeat 以及一些多重的 md-select 和一些不是的(从 Angular 1.4.7 开始):

index.html

<md-input-container ng-repeat="item in items track by $index">
        <label>item.title</label>
            <div ng-include="item.multiselect == 'true' ? 'm_selectfragment.html' : 's_selectfragment.html'"></div>
   </md-input-container>

javascript

$scope.items = 
        [title: 'funny',
        selected: '', 
        names: [
            name: 'some name', 
            name: 'other name',
            name: 'more?', 
            name: 'say wha???'             
            ],
         multiselect: "false"   
        , 
        title: 'serious', 
        selected: '', 
        names: [
           name: 'Obama',
        name: 'Trump',
        name: 'Hillary',
        name: 'Putin'               
            ],
         multiselect: "true"   
        ];

m_selectfragment.html

<md-select name="item.title" ng-model="item.selected" multiple="true">
<md-option ng-repeat="name in item.names" value="name.name">name.name
</md-option>

s_selectfragment.html

<md-select name="item.title" ng-model="item.selected">
<md-option ng-repeat="name in item.names" value="name.name">name.name
</md-option>

【讨论】:

【参考方案2】:

Splaktar 的回答是正确的:只需将 multiple 添加到您的 md-select

用于工作解决方案的 Codepen:http://codepen.io/ansgar-john/pen/RWPVEO?editors=101

HTML

<div>
  <md-input-container>
    <md-select multiple ng-model="ctrl.likedAnimals" placeholder="please select">
      <md-option ng-repeat="a in ctrl.animals" value="a">a</md-option>
    </md-select>
  </md-input-container>
</div>

JS

(function () 
  'use strict';
  angular
      .module('MyApp')
      .controller('AppCtrl', function($scope) 
        this.likedAnimals = ["mouse", "dog"];
        this.animals = ["mouse", "dog", "cat", "bird"];
  );
)();

代码基于 Stack Overflow 答案:How am I supposed to implement multiple select option in angular-material?

【讨论】:

这行得通,但是如何将选定的项目堆叠在一起,而不是像示例中那样内联并删除逗号? 是否可以在选择选项中添加图片? 是否可以在组合框中添加全选??【参考方案3】:

查看chips

您也可以应用自己的自定义模板。

【讨论】:

任何正在寻找带有添加选项的多选的人,这就是答案!【参考方案4】:

您可以查看指令here 的文档。

属性

multiple (optional): boolean - 是否是多个。

<md-select ng-model="someModel" placeholder="Select a state" multiple="true">
    <md-option ng-value="opt" ng-repeat="opt in neighborhoods2"> opt </md-option>
</md-select>

如果这不起作用,我听说md-multiple 可能会起作用,但文档尚未更新。不过,我还无法验证这一点。

【讨论】:

这行不通:-( 我相信多项选择已被禁用。我认为他们希望人们使用 Chips 进行多项选择。这里的故事仍在发展中。 我希望不会,芯片太丑了,不适合带有其他选择控件的表单的正常外观。

以上是关于我应该如何在角度材料中实现多项选择选项?的主要内容,如果未能解决你的问题,请参考以下文章

角度材料自动完成 - 如何防止键盘输入以在建议面板中选择一个选项

如何在GridView中实现多选

如何在角度材料中实现 Sidenav、页眉和页脚?

如何避免使用角度材料从角度 2 中的 mat-table 传输相同的行

如何在角度 2 的材料选择框中显示 md-error?

请问如何在delphi中实现多选打印功能!