材质选择和@Input中的CompareWith

问题描述 投票:0回答:1

我有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
在这一切之前被触发

谢谢

angular angular-material
1个回答
0
投票

仅当

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>
© www.soinside.com 2019 - 2024. All rights reserved.