2

我正在实施自定义内容下拉菜单。不能正常工作。它不设置selectedTestType值,它undefinedonChangeTestTypes.

<p-dropdown name="classTestTypeCombobox"
            [options]="TestTypes" [(ngModel)]="selectedTestType"
            [style]="{'width':'150px'}" filter="filter"
            [disabled]="this.isProdCodeDisabled"
            appendTo="body"
            required
            #classTestTypeCombobox="ngModel"
            (ngModelChange)="onChangeTestTypes($event)">
    <ng-template let-TestType pTemplate="item">
        <div class="ui-helper-clearfix" style="position: relative;height: 25px;">
            <div>{{TestType.descLong}}</div>
        </div>
    </ng-template>
</p-dropdown>

TestTypes是一个类对象数组,它具有以下成员。

id: number;
classificationCode: string;
descLong: string;
classificationParent: string;
codeType: number;

onChangeTestTypes(TestType) {
    this.selectedTestTypeDesc = this.TestTypes.filter(x => x.priceCode == TestType)[0].descLong;
    this.price.Type = this.TestTypes.filter(x => x.priceCode == TestType)[0].Type;
}
4

4 回答 4

5

通过查看 PrimeNG SelectItem,我发现该值既是标签又是对象,因此在原始问题中,答案看起来像这样{{TestType.value.descLong}}。我的完整解决方案是这样的:

<ng-template let-group pTemplate="item">
    <div style="width: 100%; display: flex;">
        <span style="width:30px;">{{group?.value.Code}}</span>
        <span style="width:60px;">{{group?.value.Description}}</span>
    </div>
</ng-template>
于 2019-03-05T14:10:41.303 回答
1

这就是我在 p-dialog 打开时获得自定义下拉菜单以显示所选值的方式。必须添加上面@freedeveloper 提到的 optionLabel 属性。

<p-dropdown appendTo="body" id="usertypeID" [options]="userTypesList" [(ngModel)]="user.userType" optionLabel="usertypeName">
<ng-template let-ut pTemplate="item">
    <div class="ui-helper-clearfix" style="position: relative;height:25px;">
      <div style="color:black;">{{ ut.value.usertypeName }}</div>
    </div>
</ng-template>

下面是我的模型(它嵌套在 User 类下):

export class UserType {
    userRoleID : number
    usertypeID : number
    usertypeName : string
}
于 2019-04-23T14:38:21.303 回答
0

将 optionLabel 与要在下拉列表中显示的字段的名称一起使用。例如,如果您想使用分类代码

 <p-dropdown name="classTestTypeCombobox"
            [options]="TestTypes" [(ngModel)]="selectedTestType"
            [style]="{'width':'150px'}" filter="filter"
            [disabled]="this.isProdCodeDisabled"
            optionLabel="classificationCode"
</p-dropdown>

请注意 optionLabel 不需要 [] ,分配的值也很简单,即自定义对象字段的名称。

于 2017-12-06T04:02:37.080 回答
0

如果您的项目是,请使用 value.name {name:'test'}

<ng-template let-country pTemplate="item">
  <div class="country-item">
    <div>{{country.value.name}}</div>
  </div>
</ng-template>
于 2022-01-12T15:39:43.187 回答