黑家伙。
我试图弄清楚为什么我的代码无法正常工作,而我根本找不到任何原因。我试图按某些属性对数组进行排序,但出现此错误:ERROR TypeError: undefined is not an object (evaluating 'this.utils')
。
这就是我使用排序方法的方式:
this.myarray.sort(this.compareDates);
这是我的排序方法:
private compareDates(firstModel: myModel, secondModel: myModel): number{
const firstDate = new Date(this.utils.stringFormatterForDate(firstModel.date));
const secondDate = new Date(this.utils.stringFormatterForDate(secondModel.date));
if(firstDate < secondDate){
return -1;
}
if(firstDate > secondDate){
return 1;
}
}
“ utils”是我通过构造函数注入的服务。如果我在其他任何地方使用该服务的方法(stringFormatterForDate),它都可以正常工作而不会引发任何错误
答案 0 :(得分:1)
我认为sort方法正在其他范围内运行。试试这个:
this.myarray.sort(this.compareDates.bind(this));
答案 1 :(得分:1)
您需要先将this.compareDates
绑定到对象,然后再将其传递到sort
。调用比较函数时,它不会传递上下文。
this.myarray.sort(this.compareDates.bind(this))
答案 2 :(得分:1)
尝试绑定到this
(由于调用compareDates
的位置):
this.myarray.sort(this.compareDates.bind(this));