angular2材料中是否有md-checkbox多重选择?

时间:2017-02-26 11:58:27

标签: angular typescript checkbox angular-material2 multipleselection

我查了一下文件,但是我还没有幸运地到达我想要的目的地。

我有一张行表。在每行中我都有md-checkbox,我可以选择哪个好。但我想提供的功能是,用户应该能够在两个选中的复选框之间选中多个复选框。例如,如果我选中顶部复选框,并选中底部复选框,则应选择它们之间的所有内容。这与gmail多重选择非常相似。

像这样。

这可能与angular2中的md-checkbox有关吗?​​

1 个答案:

答案 0 :(得分:1)

没有内置的支持,但你可以自己做。

  @ViewChildren(MdCheckbox) checkboxes;

  private _lastSelected;

  private cbClick(index: number, event: any) {
    if (this._lastSelected >= 0 && event.shiftKey) {
      let cbs = this.checkboxes.toArray();
      if (cbs[this._lastSelected].checked) {

        let firstIndex = index >= this._lastSelected ? this._lastSelected : index;
        let lastIndex = index >= this._lastSelected ? index : this._lastSelected;

        cbs.slice(firstIndex, lastIndex + 1).forEach(c => c.checked = true);
      }
    }

    this._lastSelected = index;
  }
  <div *ngFor="let o of options; let idx = index">
    <br />
    <md-checkbox (click)="cbClick(idx, $event)">{{ o }}</md-checkbox>
  </div>

查看我的工作演示:http://plnkr.co/edit/IiBJpv18zv656ZrTFxAn?p=preview