ngui / автоматическое завершение показа раскрывающегося списка со всеми элементами при нажатии стрелки - PullRequest
0 голосов
/ 19 октября 2018

Я использую ng2-ui / auto-complete в качестве расширенного раскрывающегося списка и пытаюсь добавить событие щелчка (стрелка справа), чтобы раскрывающийся список открывался со всеми элементами (без фильтра), так же, как и при открытиикогда вы щелкнете в пустом поле ввода.

это будет означать, что мне нужно установить ключевое слово на "" и перезагрузить раскрывающийся список.я думал, что мой метод onClick может сделать это.Он срабатывает, когда я нажимаю, но не перезагружает выпадающий список.

import {Component } from '@angular/core';
import { DropDown } from '../diverse/dropdown.component';
import { Branch } from '../dbModels/Branch';

@Component({
  selector: 'branch-drop',
  template: '<input ngui-auto-complete id="branch" [(ngModel)]="model2" [source]="data" list-formatter="Name" (click)="onClick($event)" (valueChanged)="valueChanged($event)" placeholder="enter text" [match-formatted]="true" [disabled]="disabled" />'
})
export class BranchDrop extends DropDown {

  ngOnChanges() {
    if(!this.src)
      return false;

    //branch dropdown data
    var tmpData : Branch[] = [];
    for(var i in this.src.UUID) {
      var tmp : Branch = new Branch();
      tmp.UUID = this.src.UUID[i];
      tmp.Name = this.src.Name[i];
      tmpData.push(tmp);
    }   
    this.data = tmpData;

    //init option
    if(this.initVal) {
      this.model2 = this.getEntry(this.initVal);  
    }
  }

  getEntry(id: string) : Branch {
    for(var d in this.data) {
      if(this.data[d].UUID == id)
        return this.data[d];
    }
  }

  valueChanged(newVal) {
    this.val.emit(newVal.UUID);
  }

  onClick(e : any) {
    //if click on arrow
    // width - 35px
    if(e.offsetX > e.currentTarget.clientWidth - 35) {
      console.log("arrow");
      //maybe highlight selected one in list

      // search empty so complete dropdown is shown
      this.model2 = "";
      //jquery???
      // document.getElementById("branch").blur();
      // document.getElementById("branch").focus();
      this.reloadList("");
      this.showDropdownList(e);
    }
  }
}

Очевидно, что this.reloadList ("");не будет работать так, потому что я не знаю, как получить доступ к директиве автозаполнения.Можете ли вы помочь мне с этим или покажите мне лучший способ?

...