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

use*_*870 5 typescript primeng angular primeng-dropdowns

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

超文本标记语言

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

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'}}
        ];
Run Code Online (Sandbox Code Playgroud)

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

Ant*_*ppe 3

我认为你的问题是optionLabel="name"因为你的城市对象不包含名称键。

要么将其替换为,optionLabel="label"要么将城市对象更改为

{label:'New York', value:{id:1, name: 'New York', code: 'NY'}}
Run Code Online (Sandbox Code Playgroud)

{name:'New York', value:{id:1, name: 'New York', code: 'NY'}}
Run Code Online (Sandbox Code Playgroud)

参见StackBlitz