0

下面是数据表中列的代码

<p-column field="organization.description" header="Partner" [editable]="dtCostShare" [style]="{'width':'30%'}">
                                                                               <ng-template let-col let-csp="rowData" pTemplate="editor">
 <span class="required-lbl">*                                                         <p-dropdown name="organization" [(ngModel)]="csp.organization.organizationId"  (onChange)="addPartnerDescription(csp.index)"  [options]="partners" [style]="{'width':'10px'}" appendTo="body" [ngClass]="{'errorCol':csp.organization.organizationId === ''}">
</p-dropdown>
 </span>
 <span *ngIf="(csp.organization.organizationId === '' )" class="text-danger">Partner is required</span>
  </ng-template> </p-column>

ts 代码填充下拉列表

 getPartners() {
    this.partners.push({ label: 'Please Select', value: '' });
    this.parameterService.getPartners().subscribe((data) => {
      for (let record of data) {
        this.partners.push({ label: record.description, value: record.organizationId });
      }
    });
  }

每当我编辑网格时,下拉菜单都会显示“请选择”而不是显示选定的组织名称。当我打印“csp.organization.organizationId”时,它给出了选定的 organizationId,但 [(ngModel)] 似乎没有设置选定的值。

我哪里错了?

4

2 回答 2

1

有同样的问题,我发现,在我的例子中,当下拉菜单仍然为空时,应用程序试图搜索 ngModel 中设置的值。

解决方案是添加一个 *ngIf 以确保列表不为空,在您的情况下,它将是这样的:

<p-dropdown *ngIf="partners != null && partners.lenght > 0"
name="organization" [(ngModel)]="csp.organization.organizationId"...

希望这会有所帮助:)

于 2017-11-17T12:36:35.493 回答
0

我通过调用下拉菜单的方法(onfocus)并执行 dropdown.updateSelectedOption(val); 解决了这个问题。在方法中。

 <p-dropdown #dd1 name="organization" [(ngModel)]="csp.organization.organizationId"  placeholder="Please Select" (onFocus)="setSelectedPartner(dd1,label of the selectItem,value of the selectItem)" [options]="SelectItemList" ></p-dropdown>

ts代码:

setSelectedPartner(dropdown: Dropdown,label:any ,val:any){
        if(val!='')
      dropdown.updateSelectedOption(val);       }

于 2017-11-23T23:02:22.793 回答