ng-lightning - 查找

时间:2016-05-13 15:28:24

标签: angular ng-lightning

我正在使用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未定义。

2 个答案:

答案 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);
};

有关详细信息,请参阅此链接: