当ngModel变量是对象时,p-dropdown不显示正确的标签

时间:2018-05-15 09:18:12

标签: angular typescript primeng primeng-dropdowns

我正在使用PrimeNG的p-dropdown组件。当页面最初加载时,我设置了ng-model,但下拉列表始终将第一个元素显示为所选元素。

HTML

<p-dropdown [options]="cities" [(ngModel)]="selectedCity"  optionLabel="name" [showClear]="true"></p-dropdown>
<p>Selected City: {{selectedCity ? selectedCity.name : 'none'}}</p>

TS

this.cities = [
            {label:'New York', value:{id:1, name: 'New York', code: 'NY'}},
            {label:'Rome', value:{id:2, name: 'Rome', code: 'RM'}},
            {label:'London', value:{id:3, name: 'London', code: 'LDN'}},
            {label:'Istanbul', value:{id:4, name: 'Istanbul', code: 'IST'}},
            {label:'Paris', value:{id:5, name: 'Paris', code: 'PRS'}}
        ];

即使我将ng-model更改为其他城市,纽约也会在下拉列表中显示为选定的

1 个答案:

答案 0 :(得分:1)

我认为您的问题出在optionLabel="name",因为您的城市对象不包含名称键。

您可以使用optionLabel="label"替换它,或者从

更改城市对象
{label:'New York', value:{id:1, name: 'New York', code: 'NY'}}

{name:'New York', value:{id:1, name: 'New York', code: 'NY'}}

请参阅StackBlitz