我有compareWith方法
compareObjects() {
return (o1: any, o2: any) => {
if (this.displayKey) {
if (o1 && o2) {
return o1[this.displayKey] === o2[this.displayKey];
}
}
return o1 === o2;
};
}
而且,
this.displayKey
,我从中得到了什么@Input
问题是,
compareWith
在传递@Input displayKey: string;
之前被触发,并且this.displayKey
的值始终未定义。
我尝试设置比较超时但不起作用。
我尝试在 ngAfterViewCheck 中使用compareData,但不起作用,因为我得到了传递的数据,但在 mat-select 中进行比较不起作用..
当我需要在方法中传递数据时,有没有更好的方法来使用
compareWith
?
当我在
console.log(this.displayKey)
、ngOnInit
、ngOnChanges
等中使用 ngOnAfterView
时,我通常会获取数据,唯一的问题是 bcs compareWith
在这一切之前被触发
谢谢
仅当
displayName
存在时才可以渲染选择。
<mat-form-field>
<mat-label>Favorite food</mat-label>
<mat-select *ngIf="displayName" [compareWith]="compareObjects">
@for (food of foods; track food) {
<mat-option [value]="food.value">{{food.viewValue}}</mat-option>
}
</mat-select>
</mat-form-field>