【问题标题】:Angular2 PrimeNg Dropdown Shows value when undefinedAngular2 PrimeNg 下拉菜单在未定义时显示值
【发布时间】:2017-03-20 18:58:35
【问题描述】:

使用 libaray 供参考:https://www.primefaces.org/primeng/#/dropdown

问题是选择显示第一个选项,但根据后端,该字段未定义。

  <p-dropdown [options]="avaliableTemplates" [style]="{'width':'100%'}" required placeholder="Select Title" filter [(ngModel)]="selectedTemplate" name="selectedTemplate"></p-dropdown>

这是检查更改的代码:

 @ViewChild('createCampaignForm') form;    
 this.form.control.valueChanges.debounceTime(1000).subscribe(values => this.doValidation(values));

这是我分配可用模板的方式

 this.campaignService.getTemplates(this.authService).subscribe(x => {
                this.avaliableTemplates = [];
                for (var i = 0; i < x.length; i++) {
                    this.avaliableTemplates.push({
                        label: x[i].title,
                        value: x[i].id
                    });
                }
            });

基于以上内容,下拉菜单似乎默认为未定义,而是数组中的第一个元素。但它甚至不承认在后端选择了第一个元素。

【问题讨论】:

  • 您确定 selectedTemplate 为 null 或未定义吗?你知道primeng版本吗?此外,将其更改为 array.map,更优雅:)
  • @Fals 最新版本 2.0.4,是的 selectedTemplate 未定义,如 img 中所示,我会很酷

标签: javascript angular primeng


【解决方案1】:

我从 Prime 中挖掘出文档,并在这里尝试了一些东西。我注意到你应该添加一个默认选项,或者它总是选择第一个选项作为默认选项:

this.campaignService.getTemplates(this.authService).subscribe(x => {
    this.avaliableTemplates = x.map((e) => { 
        return { label: e.title, value: e.id}; 
    });

    // Add the default option at position 0
    this.avaliableTemplates.splice(0, 0, {label: 'Select something', value: null});
});

【讨论】:

  • 太棒了,我希望占位符默认做到这一点。
【解决方案2】:
<p-dropdown placeholder=" "></p-dropdown>

【讨论】:

    猜你喜欢
    • 2016-11-24
    • 2020-10-02
    • 2019-04-30
    • 2020-11-04
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多