2017-02-01 1 views
0

Я использую Rxjs для того, чтобы получить мои платежные планы. Я хочу установить их в выбранном входе.Заполните директиву ng2-select2 с помощью Rxjs

В настоящее время я использую ng2-select2, чтобы показать эти планы.

Прежде всего, мне нужно, чтобы получить планы формы сервера:

this.serverService 
     .list() 
     .subscribe(
      (result: any) => { 
       for (let plan of result) 
        this.plans.push({id: plan.id, text: plan.name}); 
      }, 
      (error: any) => { 

      } 
     ); 

, где this.plans является Array<Select2OptionData> поле моего angular2 компонента.

Так, select2 является переплетены в this.plans:

<select2 id="default-select" 
    (valueChanged)="select2Changed($event)" 
    [data]="plans" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    [width]="250" 
    [theme]="'bootstrap'"> 
</select2> 

Тем не менее, я не совсем понимаю, когда и как инициализировать this.plans поле.

  1. КОГДА: на constructor? на ngOnInit, на другой функции?
  2. КАК: Я использую Rx, поэтому, когда подписка хорошо достигнута, директивы select2 должны показывать планы.

Надеюсь, я так хорошо объяснил.

ответ

0

Вы можете инициализировать переменную право при определении его:

private data: Array<Select2OptionData> = []; 

Таким образом, у вас не будет никаких проблем, ожидающих вашего сервиса, чтобы вернуть данные.

Что-то я заметил, что ваша подписка на вашу службу может привести к дублированию записей в вашем массиве данных, если предположить, что наблюдаемый всегда испускает полный список параметров. Однако я не знаю, так ли это в вашей реализации.

Смежные вопросы