我上课的财产是:
public requestLoadPersonal: Personal[] = [];
还有一种方法:
private filterByGender(selectedValue: any): void {
console.log(this.requestLoadPersonal);
this.requestLoadPersonal = this.requestLoadPersonal.filter(
(p: Personal) => {
return selectedValue ? p.gender == selectedValue : true;
}
);
}
在类的构造函数中,我有:
public filterFn = {
name: this.filterByGender
}
为什么要通过键从对象this.filterByGender
调用函数filterFn
。我收到未定义的消息,为什么变量this.requestLoadPersonal
在内部不可用:
console.log(this.requestLoadPersonal);
吗?
致电方式:
this.filterFn['name']({...});
我试图绑定变量:
this.filterFn['name']({...}).bind(this.requestLoadPersonal);
答案 0 :(得分:1)
在构造函数中,应将函数绑定到this
,如下所示:
constructor() { this.filterFn = { name: this.filterByName.bind(this) }; }
因为仅{name: this.filterByName}
失去了this
上下文,即
filterByName
具有其他实例的this
上下文。
但是,我建议您简化所有内容并使其更加简单明了。当前它很复杂,因此容易出错。