Javascript 角度ng选择:如何使ng选项不可选择?

Javascript 角度ng选择:如何使ng选项不可选择?,javascript,angular,typescript,angular-ngselect,Javascript,Angular,Typescript,Angular Ngselect,这也许是一件容易解决的事情,但我自己却无法实现我想要的。现在让我们来解决这个问题-我添加了一个选项,它允许我为我的选项列表添加另一个选项,如下所示: 问题是,当我单击文本输入时,即使我使用stopPropagation和preventDefault,它也只是选择了这个: 这就是我的组件的外观: <ng-select class="ng-select-dropdown-width" bindLabel="Label" bindValue

这也许是一件容易解决的事情,但我自己却无法实现我想要的。现在让我们来解决这个问题-我添加了一个选项,它允许我为我的选项列表添加另一个选项,如下所示:

问题是,当我单击文本输入时,即使我使用
stopPropagation
preventDefault
,它也只是选择了这个:

这就是我的组件的外观:

<ng-select
  class="ng-select-dropdown-width"
  bindLabel="Label"
  bindValue="Label"
  appendTo="body"
  dropdownPosition="bottom"
  [placeholder]="fieldAttributes?.List?.Placeholder"
  [multiple]="fieldAttributes?.List?.AllowUserMultiSelect"
  [(ngModel)]="value"
  (ngModelChange)="writeValue($event)">
  <ng-option >
    <div class="form-control">
      <div class="row add-item-control">
        <input type="text"
               class="col-10"
               placeholder="Add option"
               [(ngModel)]="addInputOption"
               [ngModelOptions]="{standalone: true}"
               (focusout)="addInputOption=''"
               (click)="addOption($event)"
               (keydown)="saveOption($event)"/>
        <div *ngIf="addInputOption.length"
             class="col cc-grey-400-txt">{{'diaries.components.addItem' | translate}}</div>
      </div>
    </div>
  </ng-option>
  <ng-option *ngFor="let option of filteredPickList | async" [value]="option.Label">
    {{option.Label}}
  </ng-option>
</ng-select>
编辑1: 可能问题在于ng select不在DOM中,但我不知道在这种情况下我能做什么:

EDIT2:将
设置为禁用,使我能够在输入中键入文本,但它不会触发任何事件,因此我无法处理keydown(例如)

  addOption(event) {
    event.stopPropagation();
    event.preventDefault();
  }

  saveOption(event) {
    if (event.keyCode === 13 || event.keyCode === 32) {
      event.stopPropagation();
      if (event.keyCode === 13) {
        this.isPickListUpdated = true;
        this.store.dispatch(new Loading('shared.saving'));
        this.componentsApiService.addPicklistItem(this.fieldAttributes.List.ID, this.addInputOption)
          .pipe(
            finalize(() => {
              this.store.dispatch(new StopLoading('shared.saving'));
            }),
            takeUntil(this.componentDestroyed$))
          .subscribe(result => {
            this.filteredPickList.next(result.PickListItems);
            this.updateItemsList(this.fieldAttributes.List.ID, result.PickListItems);
            this.value = this.addInputOption;
            this.addInputOption = '';
          }, ({error}) => {
            this.snackBarService.error(error.message);
          });
      }
    }
  }

  private updateItemsList(listID: string, updatedList: PickListItem[]) {
    for (const field of this.component.Schema) {
      if (field.Attributes.List && field.Attributes.List.ID === listID) {
        field.Attributes.List.PickListItems = updatedList;
      }
    }
  }