以下是数据表
中列的代码
<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>
&#13;
ts代码填充droupdown
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 });
}
});
}
&#13;
每当我编辑网格时,下拉列表会显示&#34;请选择&#34;而不是显示选定的组织名称。 当我打印&#34; csp.organization.organizationId&#34;它给出了选定的organizationId,但[(ngModel)]似乎没有设置所选的值。
我哪里错了?
答案 0 :(得分:1)
出现同样的问题,我发现,在我的情况下,当下拉列表仍为空时,应用程序正在尝试搜索ngModel中设置的值。
解决方案是添加一个* ngIf以确保列表不为null,在你的情况下它会像这样生成:
<p-dropdown *ngIf="partners != null && partners.lenght > 0"
name="organization" [(ngModel)]="csp.organization.organizationId"...
希望这会有所帮助:)
答案 1 :(得分: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>
&#13;
setSelectedPartner(dropdown: Dropdown,label:any ,val:any){
if(val!='')
dropdown.updateSelectedOption(val); }
&#13;