使用Rxjs填写ng2-select2指令

时间:2017-02-01 07:56:07

标签: angular typescript rxjs jquery-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是我的angular2组件的Array<Select2OptionData>字段。

因此,select2绑定到this.plans

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

尽管如此,我还不太了解WHEN和如何初始化this.plans字段。

  1. 时间:constructor?在ngOnInit上,在另一个函数上?
  2. 如何:我正在使用Rx,所以当订阅很好时,select2指令值应显示计划。
  3. 我希望我解释得那么好。

1 个答案:

答案 0 :(得分:0)

您可以在定义变量时对其进行初始化:

private data: Array<Select2OptionData> = [];

这样您就可以等待服务返回数据了。

我注意到的一点是,您对服务的订阅可能会导致数据数组中的重复条目,假设observable始终发出完整的选项列表。但是,我不知道你的实现是否就是这种情况。