下拉列表从函数 - primeng生成选项

时间:2017-05-03 14:27:33

标签: javascript angular primeng

我想从函数生成下拉列表(https://www.primefaces.org/primeng/#/dropdown)。

功能:

 getSelectItemsByProperty(name: string): SelectItem[] {
        let resArray : SelectItem[] =[];
        this.detailService.getOptionsByProperty(name).subscribe(x => resArray = x.map(val => {
            return {
                label: val.name,
                value: val.value
            }
        }));
        console.log(resArray);
        return resArray;
    }

HTML:

<p-dropdown [options]="getSelectItemsByProperty(name)" formControlName="value"></p-dropdown>

问题是getSElectedItemsByProperty被调用为CRAZY。它永远不会停止调用该函数。

目标 我想要实现的是能够在不将selectitem数组作为我的表单组中的控件的情况下使用下拉列表。我希望下拉选项由formcontrol名称生成,下拉列表的值应映射到formcontrol值。

1 个答案:

答案 0 :(得分:0)

我遇到了和你相同的问题。 我使用的是MultiSelect,我使用了 onPanelShow 事件。为了初始化我的选择。

<p-multiSelect [options]="computedOptions" (onPanelShow)="onPanelShow()"></p-multiSelect>

然后在你的组件中:

export class MyComponent {
    computedOptions: SelectItem[];

    onPanelShow(name: string) {
        let resArray : SelectItem[] =[];
        this.detailService.getOptionsByProperty(name).subscribe(x =>                         resArray = x.map(val => {
            return {
                label: val.name,
                value: val.value
            }
        })); 
        this.computedOptions = resArray;
    }
}

dropdown的情况下, onPanelShow 事件不存在。但是,我猜你应该对 onFocus 事件有相同的行为。