如何使用像(onSelect)这样的事件而不是(改变)

时间:2017-11-15 17:00:12

标签: angular multi-select

  

因为要触发(更改)事件,我们需要在UI中更改所选数据。我们可以使用EventEmitter吗?我想要在选择一个或多个元素时触发一个事件。谢谢

<select multiple (change)="setSelected($event.target)"> <option *ngFor="#item of myOptions" [value]="item.value">{{item.name}}</option> </select>

export class myClass { 
...
myOptions: [];
...
setSelected(selectElement) {
    for (var i = 0; i < selectElement.options.length; i++) {
        var optionElement = selectElement.options[i];
        var optionModel = this.myOptions[i];

        if (optionElement.selected == true) { optionModel.selected = true; }
        else { optionModel.selected = false; }
    }
}

}

2 个答案:

答案 0 :(得分:1)

<select [ngModel]="selectedItem" (ngModelChange)="setSelected($event)">
setSelected(newVal) {
    this.selectedItem = newVal //If changing the model is required
    // ... do other stuff here ...
}

希望有所帮助

答案 1 :(得分:1)

正如其他人所说,你可以通过ngModel

实现这一目标
<select multiple [(ngModel)]="selectedOptions" (change)="getSelected()">
    <option *ngFor="let item of myOptions" [value]="item.value">
        {{item.name}}
    </option>
</select>

selectedOptions是下拉列表中所选选项值的数组。您可以使用change事件或ngModelChange事件来检测何时选择了1个或多个选项。

这是一个展示这个(https://stackblitz.com/edit/angular-bvchcj?file=app%2Fapp.component.html

的stackblitz