3

我正在使用ng-select并在选定的项目上触发执行一些逻辑的回调。我面临的问题是,(add)当我从列表中选择项目并使用该事件时,该事件不会触发(change)。但是,如果我两次使用列表中的一项,则不会触发更改事件,因为它是更改事件。

<ng-select 
    [clearSearchOnAdd]="true"
    (change)="changeLeagueOwner($event)"
    (add)="test()" ---> nothing here
    [clearable]="false"
    [items]="adminLeagueMembers"
    bindLabel="display_name">
</ng-select>
4

3 回答 3

2

change事件仅在值更改时触发。如果要在同一项目选择两次时触发事件,请使用单击功能,

<ng-select 
    [clearSearchOnAdd]="true"
    (click)="changeLeagueOwner($event)"
    (add)="test()" ---> nothing here
    [clearable]="false"
    [items]="adminLeagueMembers"
    bindLabel="display_name">
</ng-select>
于 2018-07-17T07:47:07.793 回答
2

为了完成起见,文档(add)中描述了在您的示例中不起作用的原因:

(add) 在 [multiple]="true" 时添加项目时触发。输出添加项目

于 2020-12-17T07:47:11.480 回答
0

经过一番研究,我找到了解决方案:

为了该(add)事件不起作用,我(change)改为使用,我添加 ElementRef到列表中

<ng-select 
    #changeowner       
</ng-select>

在我的组件内部:

@ViewChild ('changeowner') changeOwnerRef: ElementRef;

并且内部回调只是设置falseselected所选项目的属性

this.changeOwnerRef['itemsList']['_items'].forEach((item) => {
    for (const value in item) {
      if (value === 'selected') {
        item[value] = false;
      }
    }
});
于 2018-07-17T08:33:40.193 回答