Angular2: how bind to select multiple

后端 未结 6 425
陌清茗
陌清茗 2020-11-30 08:35

I\'m able to bind using ngModel for a single select but I would like to bind an array to the multiple selected options. When I attempt this I get the error

6条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-30 09:04

    You could implement your own like in my plnkr. UPDATED because CHOW wanted the example without jquery.

    http://plnkr.co/edit/Pf92XATg3PT5RtBvrsaA?p=preview

    //our root app component
    import {Component} from 'angular2/core'
    
    @Component({
      selector: 'my-app',
      providers: [],
      styles:['.options{cursor:pointer;padding:10px;border-bottom:1px solid black;}', '.multiple-select{overflow-y:scroll; height:100px;}'],
      template: `
          

    {{selected|json}}

    {{athlete.name}}
    `, directives: [] }) export class App { public athletes:any[]=[]; public selected:any[]=[]; constructor() { for(var i = 1; i <= 5; i++){ this.athletes.push({ value:i, name:("athlete-"+i), id:("id-"+i) }) } } toggleMultiSelect(event, val){ event.preventDefault(); if(this.selected.indexOf(val) == -1){ this.selected = [...this.selected, val]; var elem = document.getElementById(val.id); elem.className += " fa fa-check"; }else{ var elem = document.getElementById(val.id); elem.className = elem.className.split(' ').splice(0, elem.className.split(' ').length - 2).join(' '); this.selected = this.selected.filter(function(elem){ return elem != val; }) } } }

提交回复
热议问题