我正在使用Lookup组件,并且收到一个错误,我的数据对象未定义,因此不能.filter()。代码如下:
getAllAccounts() {
this._quickAddService.getAllAccounts()
.subscribe(
accounts => this.getAllAccountsFinished(accounts),
error => this.errorMessage = <any>error);
}
getAllAccountsFinished(accounts:any) {
this.accounts = accounts;
console.log(this.accounts);
this.hideSpinner();
}
ngOnInit(){
this.getAllAccounts();
}
lookup(query: string): Account[] {
if (!query) {
return null;
}
return this.accounts.filter((item) => item.name.toLowerCase().indexOf(query.toLowerCase())>-1);
}
一旦服务完成返回,console.log显示数据已正确绑定。但是,当在输入上触发查找时,this.accounts未定义。
答案 0 :(得分:2)
@bekos在Gitter上的回答。需要添加绑定到组件构造函数:
constructor(elementRef:ElementRef, private _quickAddService:QuickAddService) {
this.visible = true;
this.lookup = this.lookup.bind(this);
}
答案 1 :(得分:0)
关于此事的一个小评论; - )
在TypeScript中包装查找方法而不是使用bind
方法可能更好,因为您将丢失类型检查。
这样的事情:
this.lookup = (query) => {
this.lookup(query);
};
有关详细信息,请参阅此链接: