Angular2:如何绑定选择多个

前端之家收集整理的这篇文章主要介绍了Angular2:如何绑定选择多个前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可以使用ngModel绑定一个选择,但我想绑定一个数组到多个选定的选项。当我尝试这个我得到错误 @H_403_1@

Cannot find a differ supporting object ‘xxx’ in ‘myModelProperty’

我的代码

<select multiple [(ngModel)]="myModelProperty">
    <option *ngFor="#item of myOptions" [value]="item.value">{{item.name}}</option>
</select>
这是一个支持双向数据绑定的多选列表实现。我使用@ViewChild而不是getElementById()。
@Component({
  selector: 'my-app',template: `{{title}}<p>
  <select #select multiple (change)="change($event.target.options)">
    <option *ngFor="#item of myOptions" [value]="item.value">
      {{item.name}}
    </option>
  </select>
  <br><button (click)="changeOptions()">select 1 and 3</button>
  <p>{{selectedValues | json}}`
})
export class AppComponent {
  @ViewChild('select') selectElRef;
  title = "Angular 2 beta - multi select list";
  myOptions = [ 
    {value: 1,name: "one"},{value: 2,name: "two"},{value: 3,name: "three"}];
  selectedValues = ['1','2'];
  myModelProperty = this.myOptions[0];
  constructor() { console.clear(); }
  ngAfterViewInit() {
    this.updateSelectList();
  }
  updateSelectList() {
    let options = this.selectElRef.nativeElement.options;
    for(let i=0; i < options.length; i++) {
      options[i].selected = this.selectedValues.indexOf(options[i].value) > -1;
    }
  }
  change(options) {
    this.selectedValues = Array.apply(null,options)  // convert to real Array
      .filter(option => option.selected)
      .map(option => option.value)
  }
  changeOptions() {
    this.selectedValues = ['1','3'];
    this.updateSelectList();
  }
}

Plunker

每当通过某些组件逻辑更改selectedValues属性时,还必须调用updateSelectList(),如“选择1和3”按钮回调逻辑所示。

为了更容易重用,这应该可以重构为一个属性指令。 (任何人?)

猜你在找的Angularjs相关文章