Как установить по умолчанию для ng2-select

data (? Array) - исходные данные выбора для установки. Это должен быть объект со свойствами id и text в случае типа ввода «Single» или массив таких объектов в противном случае. Этот параметр является взаимоисключающим со значением.

Это из документации на сайте. GitHub вызывает initData, что вызывает ошибку.

Я устанавливаю [данные] с массивом допустимых параметров, но ничего не выбрано. Кроме того, я вижу, что это даже срабатывает каждый раз, когда открывается раскрывающийся список.

Это тоже не работает в одиночном режиме.

Как я могу предварительно выбрать «параметры» для этого элемента управления?

Я использую это с RC.1. Другие решения на SO выглядят как более старые версии ng2.


person rkralston    schedule 22.05.2016    source источник
comment
Не могли бы вы добавить код, демонстрирующий, что вы пробовали, а что не сработало. Что ng2-select вы используете?   -  person Günter Zöchbauer    schedule 23.05.2016
comment
На самом деле демонстрация не работает для множественного выбора. Мой код выглядит примерно так.   -  person rkralston    schedule 23.05.2016
comment
Вкладка valor-software.com/ng2-select на несколько. Заполнитель говорит, что город не выбран. Код TS показывает, что следует выбрать Афины. Подобный код не работает и для сингла.   -  person rkralston    schedule 23.05.2016


Ответы (4)


https://valor-software.com/ng2-select/ на нескольких вкладках показывает использование элемента [data]. Это неверно в соответствии с ридми проекта.

Замените [data] на [initData], и предварительное заполнение будет работать, если данные правильно отформатированы.

person rkralston    schedule 23.05.2016
comment
Я попробовал, и он не работает, он говорит TypeError: this.initData.map не является функцией - person UzUmAkI_NaRuTo; 08.09.2016
comment
Пример: ›[initData] = [{id: 'example', text: 'example'}] - person Ursu Alexandr; 03.11.2016

ты должен использовать

<ng-select [active]="[periods[0]]" [data]="periods"></ng-select>

введите здесь описание изображения

person mutant_america    schedule 11.11.2016
comment
как насчет выбора нескольких значений? Я застрял в этом. :( - person Pankaj Parkar; 29.12.2016

Это работает для меня:

<ng-select #my-select [multiple]="true" [items]="dataList"></ng-select>

Импортируйте следующие классы:

import { ViewChild } from '@angular/core';
import { SelectComponent, SelectItem } from 'ng2-select';

В классе компонента получите доступ к компоненту my-select с помощью декоратора @ViewChild:

@ViewChild('my-select') mySelectComponent: SelectComponent;

Погружение в исходный код ng2-select намекает, что свойство active на SelectComponent содержит выбранные значения. Кроме того, active - это массив объектов SelectItem. Таким образом, создание SelectItem объектов и их перемещение в массив active должно позволить вам программно добавлять / удалять выбранные элементы.

Переходя к вашему вопросу, давайте установим несколько значений по умолчанию для ng2-select:

ngOnInit() {
    if(!this.mySelectComponent.active) {
        this.mySelectComponent.active = new Array<SelectItem>();
    }
    this.mySelectComponent.active.push(new SelectItem("Apple"));
    this.mySelectComponent.active.push(new SelectItem("Banana"));
}

Вы также можете очистить все существующие значения:

reset() {
    if(this.mySelectComponent.active) {
        this.mySelectComponent.active.length = 0;
    }
}

Примечание. Конструктор SelectItem принимает в качестве параметра строку или объект. Если вы передадите строку, id и text будут установлены на строковое значение. Если вы хотите передать разные значения для id и text, вы можете сделать это:

this.mySelectComponent.active.push(new SelectItem({id:'apl', text:'Apple'}));
person shreyanshd    schedule 04.05.2017

Документы текущей версии объяснены лучше: ng2-select / valor-software.com

Сторона просмотра (category-edit.component.html):

<ng-select [multiple]="true" [items]="tags" [active]="active_tags"></ng-select>

Независимо от того, есть ли один или несколько элементов, всегда должен содержать формат массива, Пример: [{id: 1, text: MyText}] или [{id: 1, text: MyText1}, {id: 2, текст: MyText2}]

Сторона компонента (category-edit.component.ts):

import {Component, OnInit, Injectable} from '@angular/core';

@Injectable()
export class MyService {

   getTagsByCategoryId(id: string): Observable<any> { /** callback */}
}

export interface SelectOption{
   id?: string;
   text?: string;
}

@Component({
  selector: 'app-category-edit',
  templateUrl: 'category-edit.component.html'     
});

export class CategoriesComponent extends OnInit{
   tags: SelectOption[]; /** Assumed you already loaded these */ 
   active_tags: SelectOption[];     

 constructor(private myService:MyService){
   super();
 }
 ngOnInit(){
   this.init();
 }

 init(){

   const id= "the_id"; /** Some valid id to query */
   /** Callback */
   this.myService
       .getTagsByCategoryId(id)(
          response=> {
            if(response.error){ console.error(response.error);}   
            }else{
               console.log(response.result;)
               this.active_tags= <SelectOption[]> response.result;
            }  
          },
          error => {console.error(error);}
     );
 }

}

person Felix Aballi    schedule 08.05.2017