我的代码如下
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
答案 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);