最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Clear icon 'x' missing when using ng-template for ng-select - Stack Overflow

programmeradmin5浏览0评论

When using ng-template for the selected items. the 'x' icon to remove the element is missing, the package's documentation about using ng-template is kinda poor so I've been digging through their source with no luck.

I've put together this stackblitz so you can reproduce the issue

HTML

<form>
  <ng-select 
  [items]="availableItems" 
  [multiple]="true" 
  [closeOnSelect]="false"
    [hideSelected]="true" 
  [searchable]="true" 
  placeholder="Choose an item" 
  [(ngModel)]="selectedItems"
     name="item">
        <ng-template ng-label-tmp let-item="item">
            <div>{{item.name}}</div>
        </ng-template>
        <ng-template ng-option-tmp let-item="item">
            <div>{{item.name}}</div>
        </ng-template>
    </ng-select>
</form>

component.ts

export class AppComponent {

  availableItems = [
    { id: 1, name: 'name 1', value: 'value 1' },
    { id: 2, name: 'name2', value: 'value 2' },
    { id: 3, name: 'name 3', value: 'value 3' },
    { id: 4, name: 'name 4', value: 'value 4' }
  ];
  selectedItems = [
    { id: 2, name: 'name2', value: 'value 2' },
    { id: 3, name: 'name 3', value: 'value 3' },
  ]
}

Any thoughts?

When using ng-template for the selected items. the 'x' icon to remove the element is missing, the package's documentation about using ng-template is kinda poor so I've been digging through their source with no luck.

I've put together this stackblitz so you can reproduce the issue

HTML

<form>
  <ng-select 
  [items]="availableItems" 
  [multiple]="true" 
  [closeOnSelect]="false"
    [hideSelected]="true" 
  [searchable]="true" 
  placeholder="Choose an item" 
  [(ngModel)]="selectedItems"
     name="item">
        <ng-template ng-label-tmp let-item="item">
            <div>{{item.name}}</div>
        </ng-template>
        <ng-template ng-option-tmp let-item="item">
            <div>{{item.name}}</div>
        </ng-template>
    </ng-select>
</form>

component.ts

export class AppComponent {

  availableItems = [
    { id: 1, name: 'name 1', value: 'value 1' },
    { id: 2, name: 'name2', value: 'value 2' },
    { id: 3, name: 'name 3', value: 'value 3' },
    { id: 4, name: 'name 4', value: 'value 4' }
  ];
  selectedItems = [
    { id: 2, name: 'name2', value: 'value 2' },
    { id: 3, name: 'name 3', value: 'value 3' },
  ]
}

Any thoughts?

Share Improve this question asked Dec 13, 2018 at 1:33 DJ22TDJ22T 1,6403 gold badges34 silver badges69 bronze badges 1
  • In chrome, Edge. It works. However, there are some CSS issues in IE. I believe it is a cross-browser compatibility issue. Check your browser – Kevin Commented Dec 13, 2018 at 1:56
Add a comment  | 

1 Answer 1

Reset to default 23

When passing in a custom template, you need to define the clear button inside of it. Please refer to the documentation here: https://ng-select.github.io/ng-select#/multiselect

What you need to have is a template similar to the following:

<ng-template ng-label-tmp let-item="item" let-clear="clear">
    <span class="ng-value-label">{{item.login}}</span>
    <span class="ng-value-icon right" (click)="clear(item)">×</span>
</ng-template>

I've modified your StackBlitz to add this functionality. You can find it here.

发布评论

评论列表(0)

  1. 暂无评论