将defaultValue设置为p-multiselect

时间:2020-07-24 15:22:16

标签: html angular typescript drop-down-menu primeng

我的代码如下

export class LkBoardStatus {
    id : number = 0;
    descr : string = '';
}

component.ts

//...
lkBoardStatusList: LkBoardStatus[] = []; 
selectedStatus: LkBoardStatus = new LkBoardStatus;

ngOnInit():void {  
        this.loadBoardStatusList();
        ../
        
        }
    
    
loadBoardStatusList(){
            this.boardService.loadBoardStatus().subscribe( posts =>{
                this.data = posts; 
                console.log('loadBoardStatusList',this.data);
                },
                error => { 
                console.log('loadBoardStatusList - error',error);
                this._errorService.handleError(error); 
                }, 
                () => {   
                this.lkBoardStatusList = this.data.boardStatusLi;
                for(let i=0; i<this.lkBoardStatusList.length; i++){
                     if(this.lkBoardStatusList[i].id == 70){
                         this.selectedStatus = this.lkBoardStatusList[i];
                     }
                 }
                 console.log(this.selectedStatus);
            }); 
                
        }
        
    

在这里,我有selectedStatus,它在for循环中被赋值为'70'。 我的comopnent.html在下面

 <th *ngSwitchCase="'statusObj'" [colSpan] = "2" style="text-align:center">
    <p-multiSelect [options]="lkBoardStatusList" optionLabel="descr" [(ngModel)]="selectedStatus" defaultLabel="Select" (onChange)="dt.filter($event.value, col.field, 'in')"></p-multiSelect>
    

inspect元素为我提供了selectedStatus的正确对象,但是onLoad的值未默认为70。我在哪里出错?请提出建议。TIA

1 个答案:

答案 0 :(得分:1)

selectedStatus必须是一个数组。

尝试替换

for(let i=0; i<this.lkBoardStatusList.length; i++){
    if(this.lkBoardStatusList[i].id == 70){
        this.selectedStatus = this.lkBoardStatusList[i];
    }
}

使用

this.selectedStatus = this.lkBoardStatusList.filter(item => item.id == 70);